Input buildinfo: https://buildinfos.debian.net/buildinfo-pool/r/ruby-semantic-puppet/ruby-semantic-puppet_1.0.3-1_all.buildinfo Use metasnap for getting required timestamps New buildinfo file: /tmp/ruby-semantic-puppet-1.0.3-1d5uxtz2z/ruby-semantic-puppet_1.0.3-1_all.buildinfo Get source package info: ruby-semantic-puppet=1.0.3-1 Source URL: http://snapshot.notset.fr/mr/package/ruby-semantic-puppet/1.0.3-1/srcfiles?fileinfo=1 env -i PATH=/usr/sbin:/usr/bin:/sbin:/bin TMPDIR=/tmp mmdebstrap --arch=amd64 --include=adduser=3.118 autoconf=2.69-14 automake=1:1.16.3-2 autopoint=0.21-3 autotools-dev=20180224.1+nmu1 base-files=11 base-passwd=3.5.48 bash=5.1-2 binutils=2.35.1-7 binutils-common=2.35.1-7 binutils-x86-64-linux-gnu=2.35.1-7 bsdextrautils=2.36.1-6 bsdutils=1:2.36.1-6 build-essential=12.9 bzip2=1.0.8-4 ca-certificates=20210119 coreutils=8.32-4+b1 cpp=4:10.2.1-1 cpp-10=10.2.1-6 dash=0.5.11+git20200708+dd9ef66-5 debconf=1.5.74 debhelper=13.3.1 debianutils=4.11.2 devscripts=2.20.5 dh-autoreconf=19 dh-strip-nondeterminism=1.10.0-1 diffutils=1:3.7-5 dirmngr=2.2.20-1 dpkg=1.20.7.1 dpkg-dev=1.20.7.1 dwz=0.13+20210118-1 fakeroot=1.25.3-1.1 file=1:5.39-3 findutils=4.8.0-1 g++=4:10.2.1-1 g++-10=10.2.1-6 gcc=4:10.2.1-1 gcc-10=10.2.1-6 gcc-10-base=10.2.1-6 gem2deb=1.4 gem2deb-test-runner=1.4 gettext=0.21-3 gettext-base=0.21-3 gnupg=2.2.20-1 gnupg-l10n=2.2.20-1 gnupg-utils=2.2.20-1 gpg=2.2.20-1 gpg-agent=2.2.20-1 gpg-wks-client=2.2.20-1 gpg-wks-server=2.2.20-1 gpgconf=2.2.20-1 gpgsm=2.2.20-1 gpgv=2.2.20-1 grep=3.6-1 groff-base=1.22.4-6 gzip=1.10-2 hostname=3.23 init-system-helpers=1.60 intltool-debian=0.35.0+20060710.5 libacl1=2.2.53-9 libarchive-zip-perl=1.68-1 libasan6=10.2.1-6 libassuan0=2.5.4-1 libatomic1=10.2.1-6 libattr1=1:2.4.48-6 libaudit-common=1:3.0-2 libaudit1=1:3.0-2 libb-hooks-op-check-perl=0.22-1+b3 libbinutils=2.35.1-7 libblkid1=2.36.1-6 libbz2-1.0=1.0.8-4 libc-bin=2.31-9 libc-dev-bin=2.31-9 libc6=2.31-9 libc6-dev=2.31-9 libcap-ng0=0.7.9-2.2+b1 libcc1-0=10.2.1-6 libclass-method-modifiers-perl=2.13-1 libcom-err2=1.45.6-1 libcrypt-dev=1:4.4.17-1 libcrypt1=1:4.4.17-1 libctf-nobfd0=2.35.1-7 libctf0=2.35.1-7 libdb5.3=5.3.28+dfsg1-0.6 libdebconfclient0=0.256 libdebhelper-perl=13.3.1 libdevel-callchecker-perl=0.008-1+b2 libdpkg-perl=1.20.7.1 libdynaloader-functions-perl=0.003-1.1 libelf1=0.182-3 libencode-locale-perl=1.05-1.1 libexpat1=2.2.10-1 libfakeroot=1.25.3-1.1 libffi7=3.3-5 libfile-dirlist-perl=0.05-2 libfile-homedir-perl=1.006-1 libfile-listing-perl=6.14-1 libfile-stripnondeterminism-perl=1.10.0-1 libfile-touch-perl=0.11-1 libfile-which-perl=1.23-1 libgcc-10-dev=10.2.1-6 libgcc-s1=10.2.1-6 libgcrypt20=1.8.7-2 libgdbm-compat4=1.19-2 libgdbm6=1.19-2 libgmp-dev=2:6.2.1+dfsg-1 libgmp10=2:6.2.1+dfsg-1 libgmpxx4ldbl=2:6.2.1+dfsg-1 libgnutls30=3.7.0-5 libgomp1=10.2.1-6 libgpg-error0=1.38-2 libgssapi-krb5-2=1.18.3-4 libhogweed6=3.6-2 libhtml-parser-perl=3.75-1+b1 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.27-1 libhttp-negotiate-perl=6.01-1 libicu67=67.1-6 libidn2-0=2.3.0-5 libimport-into-perl=1.002005-1 libio-html-perl=1.001-1.1 libio-pty-perl=1:1.15-2 libio-socket-ssl-perl=2.069-1 libipc-run-perl=20200505.0-1 libisl23=0.23-1 libitm1=10.2.1-6 libk5crypto3=1.18.3-4 libkeyutils1=1.6.1-2 libkrb5-3=1.18.3-4 libkrb5support0=1.18.3-4 libksba8=1.5.0-3 libldap-2.4-2=2.4.57+dfsg-1 liblsan0=10.2.1-6 liblwp-mediatypes-perl=6.04-1 liblwp-protocol-https-perl=6.10-1 liblz4-1=1.9.3-1 liblzma5=5.2.5-1.0 libmagic-mgc=1:5.39-3 libmagic1=1:5.39-3 libmodule-runtime-perl=0.016-1 libmoo-perl=2.004004-1 libmount1=2.36.1-6 libmpc3=1.2.0-1 libmpdec3=2.5.1-1 libmpfr6=4.1.0-3 libncursesw6=6.2+20201114-2 libnet-http-perl=6.20-1 libnet-ssleay-perl=1.88-3+b1 libnettle8=3.6-2 libnpth0=1.6-3 libnsl-dev=1.3.0-2 libnsl2=1.3.0-2 libp11-kit0=0.23.22-1 libpam-modules=1.4.0-2 libpam-modules-bin=1.4.0-2 libpam-runtime=1.4.0-2 libpam0g=1.4.0-2 libparams-classify-perl=0.015-1+b3 libpcre2-8-0=10.36-2 libpcre3=2:8.39-13 libperl5.32=5.32.0-6 libpipeline1=1.5.3-1 libpython3-stdlib=3.9.1-1 libpython3.9-minimal=3.9.1-3 libpython3.9-stdlib=3.9.1-3 libquadmath0=10.2.1-6 libreadline8=8.1-1 librole-tiny-perl=2.002004-1 libruby2.7=2.7.2-3 libsasl2-2=2.1.27+dfsg-2 libsasl2-modules-db=2.1.27+dfsg-2 libseccomp2=2.5.1-1 libselinux1=3.1-2+b2 libsemanage-common=3.1-1 libsemanage1=3.1-1+b2 libsepol1=3.1-1 libsigsegv2=2.12-3 libsmartcols1=2.36.1-6 libsqlite3-0=3.34.1-1 libssl1.1=1.1.1i-2 libstdc++-10-dev=10.2.1-6 libstdc++6=10.2.1-6 libstrictures-perl=2.000006-1 libsub-override-perl=0.09-2 libsub-quote-perl=2.006006-1 libsystemd0=247.2-5 libtasn1-6=4.16.0-2 libtimedate-perl=2.3300-1 libtinfo6=6.2+20201114-2 libtirpc-common=1.3.1-1 libtirpc-dev=1.3.1-1 libtirpc3=1.3.1-1 libtool=2.4.6-15 libtry-tiny-perl=0.30-1 libtsan0=10.2.1-6 libubsan1=10.2.1-6 libuchardet0=0.0.7-1 libudev1=247.2-5 libunistring2=0.9.10-4 liburi-perl=5.06-1 libuuid1=2.36.1-6 libwww-perl=6.52-1 libwww-robotrules-perl=6.02-1 libxml2=2.9.10+dfsg-6.3+b1 libyaml-0-2=0.2.2-1 libzstd1=1.4.8+dfsg-1 linux-libc-dev=5.10.9-1 login=1:4.8.1-1 lsb-base=11.1.0 m4=1.4.18-5 mailcap=3.68 make=4.3-4 man-db=2.9.3-2 mawk=1.3.4.20200120-2 media-types=4.0.0 mime-support=3.66 ncurses-base=6.2+20201114-2 ncurses-bin=6.2+20201114-2 netbase=6.2 openssl=1.1.1i-2 passwd=1:4.8.1-1 patch=2.7.6-7 patchutils=0.4.2-1 perl=5.32.0-6 perl-base=5.32.0-6 perl-modules-5.32=5.32.0-6 perl-openssl-defaults=5 pinentry-curses=1.1.0-4 po-debconf=1.0.21+nmu1 python3=3.9.1-1 python3-minimal=3.9.1-1 python3.9=3.9.1-3 python3.9-minimal=3.9.1-3 rake=13.0.1-4 readline-common=8.1-1 ruby=1:2.7+2 ruby-all-dev=1:2.7+2 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-1 ruby-rspec=3.9.0c2e2m1s3-1 ruby-rspec-core=3.9.0c2e2m1s3-1 ruby-rspec-expectations=3.9.0c2e2m1s3-1 ruby-rspec-mocks=3.9.0c2e2m1s3-1 ruby-rspec-support=3.9.0c2e2m1s3-1 ruby-rubygems=3.2.5-2 ruby-test-unit=3.3.9-1 ruby-xmlrpc=0.3.0-2 ruby2.7=2.7.2-3 ruby2.7-dev=2.7.2-3 rubygems-integration=1.18 sed=4.7-1 sensible-utils=0.0.14 sysvinit-utils=2.96-5 tar=1.32+dfsg-1 tzdata=2021a-1 util-linux=2.36.1-6 wdiff=1.2.2-2+b1 xz-utils=5.2.5-1.0 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/20210814T212851Z/ bookworm main deb-src http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb http://snapshot.notset.fr/archive/debian/20210325T091936Z/ unstable main deb http://snapshot.notset.fr/archive/debian/20210129T031654Z/ 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.3-1 && mkdir -p /build/ruby-semantic-puppet-DKo2iW && dpkg-source --no-check -x /*.dsc /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3 && chown -R builduser:builduser /build/ruby-semantic-puppet-DKo2iW" --customize-hook=chroot "$1" env --unset=TMPDIR runuser builduser -c "cd /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3 && env DEB_BUILD_OPTIONS="parallel=4" LC_ALL="C.UTF-8" SOURCE_DATE_EPOCH="1611934490" dpkg-buildpackage -uc -a amd64 --build=all" --customize-hook=sync-out /build/ruby-semantic-puppet-DKo2iW /tmp/ruby-semantic-puppet-1.0.3-1d5uxtz2z bullseye /dev/null deb http://snapshot.notset.fr/archive/debian/20210129T031654Z 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.qUUQ2zew41 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.qUUQ2zew41 Reading package lists... Building dependency tree... util-linux is already the newest version (2.36.1-6). 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/20210129T031654Z unstable/main amd64 libfakeroot amd64 1.25.3-1.1 [47.0 kB] Get:2 http://snapshot.notset.fr/archive/debian/20210129T031654Z unstable/main amd64 fakeroot amd64 1.25.3-1.1 [87.0 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 134 kB in 0s (889 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 ... 4661 files and directories currently installed.) Preparing to unpack .../libfakeroot_1.25.3-1.1_amd64.deb ... Unpacking libfakeroot:amd64 (1.25.3-1.1) ... Selecting previously unselected package fakeroot. Preparing to unpack .../fakeroot_1.25.3-1.1_amd64.deb ... Unpacking fakeroot (1.25.3-1.1) ... Setting up libfakeroot:amd64 (1.25.3-1.1) ... Setting up fakeroot (1.25.3-1.1) ... update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode Processing triggers for libc-bin (2.31-9) ... 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/20210814T212851Z/ bookworm main deb-src http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb http://snapshot.notset.fr/archive/debian/20210325T091936Z/ unstable main deb http://snapshot.notset.fr/archive/debian/20210129T031654Z/ unstable main' >> /etc/apt/sources.list && apt-get update"' exec /tmp/mmdebstrap.qUUQ2zew41 Get:1 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm InRelease [81.6 kB] Get:2 http://snapshot.notset.fr/archive/debian/20210325T091936Z unstable InRelease [154 kB] Hit:3 http://snapshot.notset.fr/archive/debian/20210129T031654Z unstable InRelease Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:5 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:5 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:5 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Get:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources [11.4 MB] Get:5 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages [11.1 MB] Ign:6 http://snapshot.notset.fr/archive/debian/20210325T091936Z unstable/main amd64 Packages Ign:6 http://snapshot.notset.fr/archive/debian/20210325T091936Z unstable/main amd64 Packages Ign:6 http://snapshot.notset.fr/archive/debian/20210325T091936Z unstable/main amd64 Packages Get:6 http://snapshot.notset.fr/archive/debian/20210325T091936Z unstable/main amd64 Packages [11.7 MB] Fetched 34.4 MB in 30s (1149 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.qUUQ2zew41 I: running --customize-hook in shell: sh -c 'chroot "$1" env sh -c "apt-get source --only-source -d ruby-semantic-puppet=1.0.3-1 && mkdir -p /build/ruby-semantic-puppet-DKo2iW && dpkg-source --no-check -x /*.dsc /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3 && chown -R builduser:builduser /build/ruby-semantic-puppet-DKo2iW"' exec /tmp/mmdebstrap.qUUQ2zew41 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.1 kB of source archives. Get:1 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main ruby-semantic-puppet 1.0.3-1 (dsc) [2171 B] Get:2 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main ruby-semantic-puppet 1.0.3-1 (tar) [28.4 kB] Get:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main ruby-semantic-puppet 1.0.3-1 (diff) [2540 B] Fetched 33.1 kB in 0s (243 kB/s) Download complete and in download only mode W: Download is performed unsandboxed as root as file 'ruby-semantic-puppet_1.0.3-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-DKo2iW/ruby-semantic-puppet-1.0.3 dpkg-source: info: unpacking ruby-semantic-puppet_1.0.3.orig.tar.gz dpkg-source: info: unpacking ruby-semantic-puppet_1.0.3-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-DKo2iW/ruby-semantic-puppet-1.0.3 && env DEB_BUILD_OPTIONS="parallel=4" LC_ALL="C.UTF-8" SOURCE_DATE_EPOCH="1611934490" dpkg-buildpackage -uc -a amd64 --build=all"' exec /tmp/mmdebstrap.qUUQ2zew41 dpkg-buildpackage: info: source package ruby-semantic-puppet dpkg-buildpackage: info: source version 1.0.3-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Sebastien Badia 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 -i -O--buildsystem=ruby dh_ruby --install /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet dh_ruby --install ┌──────────────────────────────────────────────────────────────────────────────┐ │ Install files │ └──────────────────────────────────────────────────────────────────────────────┘ install -d /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby install -D -m644 /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/lib/semantic_puppet.rb /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet.rb install -D -m644 /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency.rb /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency.rb install -D -m644 /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/module_release.rb /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/module_release.rb install -D -m644 /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/unsatisfiable_graph.rb /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/unsatisfiable_graph.rb install -D -m644 /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/graph.rb /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/graph.rb install -D -m644 /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/graph_node.rb /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/graph_node.rb install -D -m644 /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/source.rb /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/source.rb install -D -m644 /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/version_range.rb /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/version_range.rb install -D -m644 /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/version.rb /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/version.rb install -D -m644 /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/gem_version.rb /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/gem_version.rb ┌──────────────────────────────────────────────────────────────────────────────┐ │ Install Rubygems integration metadata │ └──────────────────────────────────────────────────────────────────────────────┘ generating gemspec at /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/share/rubygems-integration/all/specifications/semantic_puppet-1.0.3.gemspec dh_installchangelogs -pruby-semantic-puppet /build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/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-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/share/rubygems-integration/all:/build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/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=/build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby:. GEM_PATH=/build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/share/rubygems-integration/all:/build/ruby-semantic-puppet-DKo2iW/ruby-semantic-puppet-1.0.3/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.9.3/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.9.2/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.9.2/exe/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation Run options: include {:focus=>true} All examples were filtered out; ignoring {:focus=>true} Randomized with seed 49209 SemanticPuppet::Dependency::Graph #add_graph_constraint can create a new constraint on a graph permits multiple graph constraints #satisfies_dependency? is not satisfied by modules that do not fulfill all the constraints 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 #initialize implements the GraphNode protocol adds the named dependencies for every key in the passed hash can be called without arguments adds constraints for every key in the passed hash #add_constraint can create a new constraint on a module permits multiple constraints against the same module name #satisfies_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::Version #next with :minor returns the next minor version removes any prerelease information removes any build information does not modify the original version resets the patch version to 0 with :patch returns the next patch version removes any build information does not modify the original version removes any prerelease information with :major returns the next major version does not modify the original version removes any prerelease information resets the minor and patch versions to 0 removes any build information .valid? Spec v2.0.0 Section 9 permits numeric prerelease identifiers of zero rejects prerelease identifiers with non-alphanumerics permits non-numeric prerelease identifiers with leading zeroes permits non-numeric prerelease identifiers rejects numeric prerelease identifiers with leading zeroes rejects empty prerelease version identifiers rejects empty prerelease versions Section 2 rejects versions that contain too few parts rejects version numbers containing leading zeroes rejects versions that contain negative integers rejects versions that contain non-integers rejects versions that contain too many parts permits zeroes in version number parts Section 10 rejects empty build metadata permits numeric build identifiers with leading zeroes rejects empty build identifiers permits non-numeric build identifiers with leading zeroes permits numeric build identifiers of zero rejects build identifiers with non-alphanumerics Spec v1.0.0 Section 2 rejects versions that contain too many parts rejects versions that contain non-integers rejects versions that contain too few parts permits zeroes in version number parts Section 4 permits non-numeric prerelease identifiers with leading zeroes rejects numeric prerelease identifiers with leading zeroes rejects empty prerelease versions permits numeric prerelease identifiers of zero rejects prerelease identifiers with non-alphanumerics #== should yield false when the major differs should yield false when the minor differs should yield false when the patch differs should yield false when compared to something that is not a Version should yield true when comparing two equal instances should yield false when the prerelease differs .parse Spec v1.0.0 Section 4 permits numeric prerelease identifiers of zero permits non-numeric prerelease identifiers with leading zeroes rejects numeric prerelease identifiers with leading zeroes rejects prerelease identifiers with non-alphanumerics rejects empty prerelease versions examples 1.0.0-rc1 1.0.0-beta1 1.0.0-beta2 1.0.0-alpha1 Section 2 permits zeroes in version number parts rejects versions that contain too many parts rejects versions that contain non-integers rejects versions that contain too few parts examples 1.10.0 1.9.0 1.11.0 Spec v2.0.0 Section 9 rejects empty prerelease version identifiers rejects empty prerelease versions permits numeric prerelease identifiers of zero rejects prerelease identifiers with non-alphanumerics permits non-numeric prerelease identifiers with leading zeroes rejects numeric prerelease identifiers with leading zeroes examples 1.0.0-0.3.7 1.0.0-alpha.1 1.0.0-x.7.z.92 1.0.0-alpha Section 2 rejects versions that contain too few parts rejects versions that contain non-integers rejects versions that contain negative integers rejects versions that contain too many parts permits zeroes in version number parts rejects version numbers containing leading zeroes examples 1.9.0 1.11.0 1.10.0 Section 10 rejects empty build metadata rejects build identifiers with non-alphanumerics permits numeric build identifiers with leading zeroes permits numeric build identifiers of zero permits non-numeric build identifiers with leading zeroes rejects empty build identifiers examples 1.0.0-beta+exp.sha.5114f85 1.0.0+20130313144700 1.0.0-alpha+001 #<=> Spec v2.0.0 Section 11 comparisons against prereleases prereleases have lower precedence comparisons without prereleases sorted order comparisions between prereleases sorted order build metadata does figure into equality identical prereleases are equal build metadata does not figure into precendence non-numeric identifiers sort ASCIIbetically identifiers are parsed left-to-right larger identifier sets have precendence numeric identifiers sort numerically non-numeric identifiers have a higher precendence Spec v1.0.0 Section 4 sorted order SemanticPuppet::Dependency .query without sources returns an unsatisfied ModuleRelease with one source populates all returned ModuleReleases with related dependencies populates the returned ModuleRelease with related dependencies returns a ModuleRelease with the requested dependencies queries the source for each dependency only once queries the source for each dependency queries the source for release information with multiple sources resolves all dependencies against all sources queries each source in turn .sources is frozen defaults to an empty list can be modified by using #add_source can be emptied by using #clear_sources .resolve for a module with dependencies that violate module constraints on the graph that can be resolved terminates that cannot be resolved fails with an appropriate message for a module without dependencies returns the greatest release matching the version range when the query omits all versions fails with an appropriate message when the query omits all stable versions returns the greatest prerelease version matching the range when the query includes both stable and prerelease versions returns the greatest stable release matching the range that violate graph constraints that can be resolved terminates that cannot be resolved fails with an appropriate message 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 circular dependencies that cannot be resolved fails with an appropriate message that can be resolved terminates for a module with dependencies returns the greatest releases matching the dependency range when the dependency 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 SemanticPuppet::VersionRange The version 2.2.3 should be above range ~1 1.2.3 should not be below range 1.2.x || 2.x 1.2.3 should not be below range ~>1 1.1.3 should be below range 1.2.x || 2.x 1.1.1 should not be below range < 1.2 1.2.5 should be above range 0.1.20 || 1.2.4 2.1.2 should not be below range 2 1.0.1-beta1 should be above range 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) 1.9999.9999 should not be above range <2.0.0(<2.0.0) 1.0.0-beta should be below range > 1 1.1.3 should be below range 1.2.* 2.0.0 should be above range <2.0.0 0.2.3 should be below range ~>1 0.7.2 should not be above range =0.7.x(>=0.7.0 <0.8.0) 0.0.0-0 should not be above range ^1(>=1.0.0 <2.0.0) 1.2.3-foo should not be above range *(*) 0.1.2 should be below range ~1.0 2.9999.9999 should be above range <=2.0.0 3.2.0 should be below range ~>3.2.1 0.0.0 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) 1.2.1 should be below range > 1.2 1.0.0 should not be above range >=1.0.0(>=1.0.0) 2.2.3 should be above range ~>1 2.4.2 should be above range 2.3 3.2.0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 2.2.3 should be above range 1.0.0 - 2.0.0 1.1.3 should be below range 1.2.* 5.0.1 should be above range 2.*.* 2.1.3 should not be below range 1.2.x || 2.x 3.1.2 should be above range 2 1.0.1 should not be below range >1.0.0 2.0.0 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) 1.0.0 should not be below range >=1 1.2.3 should not be below range 1.2.* || 2.* 1.0.0 should not be below range >= 1.0.0 1.0.1 should be above range 1.0.0 1.1.3 should be below range 2.x.x 2.0.0 should not be below range ^1.0.0 || ~2.0.1 0.7.0 should be above range <0.7.x 1.2.0 should be above range <1.2 1.9999.9999 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) 2.0.0 should be below range >2.0.0 1.0.1 should not be below range >= 1.0.0 0.5.4-alpha should be below range ~v0.5.4-pre 0.6.2 should not be below range <=0.7.x 1.0.2 should not be below range ~ 1.0 1.0.0-beta.1 should be below range 1.0.0-beta.2 2.3.1 should not be below range 2.3 1.1.1 should be below range >=2.0.0 0.1.97 should not be below range >=0.1.97 1.3.4 should not be below range || 3.0.0 should be above range 2 1.0.0-0 should be below range ^1 2.5.0 should be above range ~2.4 1.3.3 should be above range 1.2.* 1.9999.9999 should not be above range < 2.0.0(<2.0.0) 0.7.1-1 should be above range ~0.6.1-1 1.1.0 should not be above range >=1.0.0(>=1.0.0) 2.1.3 should not be below range 1.2.* || 2.* 1.2.3 should not be above range 1.2.x || 2.x(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) 1.0.0-beta should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 1.3.0 should be above range ~1.2.2 2.1.3 should not be above range 2.*.*(>=2.0.0 <3.0.0) 0.2.9 should not be above range <= 2.0.0(<=2.0.0) 1.2.3 should not be below range ~1 3.1.3 should be above range 1.2.* || 2.* 0.0.1 should be below range 1.0.0 - 2.0.0 1.0.0-beta should be above range <1 0.8.0-asdf should be above range =0.7.x 1.0.0 should be below range 2.x.x 1.2.3 should not be below range 1.2.* 0.0.0 should not be below range >=0.2.3 || <0.0.1 1.2.4 should not be above range 0.1.20 || >1.2.4(0.1.20 || >1.2.4) 2.0.1 should be above range 1.0.0 - 2.0.0 2.1.3 should not be below range 2.x.x 1.2.3 should not be below range x 1.1.3 should be below range 2.*.* 1.0.0 should be below range >1 1.1.3 should be below range 1.2.* || 2.* 1.0.0 should be below range >=2.0.0 0.0.0-beta should be below range 1 1.9999.9999 should be below range 2 0.6.2 should be below range =0.7.x 0.6.2 should not be above range <=0.7.x(<0.8.0) 1.2.3 should not be above range ~1(>=1.0.0 <2.0.0) 0.2.4 should not be below range >=* 1.0.1 should not be above range >=1.0.0(>=1.0.0) 2.1.3 should not be above range 1.2.x || 2.x(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) 3.3.0 should be above range ~>3.2.1 1.2.3 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) 1.1.0 should be above range ~ 1.0 1.2.9 should be below range >=2.0.0 3.3.2 should be above range ~>3.2.1 1.2.1 should be below range ~1.2.2 1.1.1 should not be above range < 1.2(<1.2.0) 0.2.9 should not be below range < 2.0.0 1.2.3 should not be above range ~> 1(>=1.0.0 <2.0.0) 5.0.0-0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 3.0.0 should be above range 1.2.x || 2.x 1.1.2 should be above range ~1.0 0.2.3 should be below range 1.0.0 - 2.0.0 3.1.3 should be above range 1.2.x || 2.x 0.2.4 should not be below range >=0.2.3 || <0.0.1 1.2.4 should not be below range 0.1.20 || 1.2.4 2.0.0 should not be below range <= 2.0.0 1.2.3 should not be above range x(*) 1.1.1 should not be above range <1.2(<1.2.0) 1.1.0 should not be below range > 1.0.0 0.1.0 should be below range ~ 1.0 3.0.0 should be above range <=2.0.0 0.8.0 should be above range =0.7.x 1.0.0 should be below range 2 2.0.0 should be above range 1.0.0 3.2.2 should not be below range ~>3.2.1 2.1.1 should be above range <=2.0.0 2.1.2 should not be above range 2(>=2.0.0 <3.0.0) 0.5.4-alpha should be below range ~v0.5.4-pre 0.5.4 should not be below range ~v0.5.4-pre 1.2.3 should not be below range 1.2.* || 2.* 0.2.9 should not be above range < 2.0.0(<2.0.0) 0.7.0-asdf should not be above range =0.7.x(>=0.7.0 <0.8.0) 0.7.0-asdf should be below range >=0.7.x 2.1.3 should not be above range 2.x.x(>=2.0.0 <3.0.0) 2.3.2 should be below range ~>3.2.1 1.2.3 should not be below range * 0.2.9 should not be above range <=2.0.0(<=2.0.0) 2.0.0 should not be above range ^3.0.0(>=3.0.0 <4.0.0) 0.1.5 should be below range 0.1.20 || 1.2.4 1.2.3 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) 2.0.0 should not be above range ^1.0.0 || ~2.0.1(>=1.0.0 <2.0.0 || >=2.0.1 <2.1.0) 2.2.9 should be above range <2.0.0 0.6.1-1 should not be below range ~0.6.1-1 2.2.2 should be below range 2.3 5.0.0-0 should not be above range ^0.1.0 || ~3.0.1 || 5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) 0.2.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 above range ~>1(>=1.0.0 <2.0.0) 3.2.9 should be above range <=2.0.0 2.2.1 should be below range 2.3 3.2.2 should not be above range ~>3.2.1(>=3.2.1 <3.3.0) 0.9.9 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) 2.0.0 should not be above range <=2.0.0(<=2.0.0) 0.2.3 should be below range ~> 1 2.0.0 should not be below range <=2.0.0 1.1.0 should be below range 1.2.x 2.0.0 should be below range >2.0.0 1.0.0 should not be below range >= 1 0.0.0 should be below range ~1.0 1.1.0 should not be below range >= 1.0.0 1.1.0 should not be above range >1.0.0(>1.0.0) 1.1.0 should be above range ~1.0 0.6.2 should be below range >=0.7.x 1.2.1 should be above range < 1.2 1.0.0 should not be below range 1.1.3 should be below range 1.2.x 1.0.0 should not be below range >=1.0.0 1.1.0 should not be below range ~ 1.0 1.1.0 should not be below range >=1.0.0 1.1.1 should not be below range <1.2 0.2.4 should be below range ~>1 1.0.2 should not be above range ~1.0(>=1.0.0 <1.1.0) 0.5.5 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) 2.0.0-beta should be above range 1 2.3.1 should not be above range 2.3(>=2.3.0 <2.4.0) 1.9999.9999 should not be below range <=2.0.0 0.6.0 should be below range =0.7.x 0.0.1 should be below range 1.0.0 2.4.0 should not be above range ~2.4(>=2.4.0 <2.5.0) 1.0.0 should be above range <1 1.1.0 should not be below range >1.0.0 3.5.0 should not be above range ^0.1.0 || ~3.0.1 || >4 <=5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) 0.2.4 should not be below range >=0.2.3 <=0.2.4 0.5.4 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.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 0.2.9 should not be below range <2.0.0 0.2.4 should not be above range >=*(>=0.0.0) 1.2.3 should not be above range 1.2.x(>=1.2.0 <1.3.0) 0.2.5 should not be below range >0.2.3 >0.2.4 <=0.2.5 1.3.4 should not be above 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) 0.6.1-pre should be above range ~v0.5.4-pre 1.0.0-beta should be below range >1 1.9999.9999 should not be below range <2.0.0 0.2.3 should be below range ~1 1.2.9 should be below range >=2.0.0 1.0.0 should not be above range 1.0.0(1.0.0) 1.0.0-beta should not be below range ^1.0.0-alpha 3.2.3 should be above range ~> 1 1.3.0 should be above range 1.2.x 1.2.3 should not be above range *(*) 0.2.5 should not be above range >0.2.3 >0.2.4 <=0.2.5(>0.2.4 <=0.2.5) 1.9999.9999 should not be below range < 2.0.0 1.0.0-beta should not be above range 1(>=1.0.0 <2.0.0) 2.2.4 should be above range ~>1 0.7.2 should be above range <0.7.x 1.9999.9999 should be below range >=2.0.0 2.4.5 should not be below range ~2.4 0.2.9 should not be below range <= 2.0.0 0.6.1-1 should not be above range ~0.6.1-1(>=0.6.1-1 <0.7.0) 2.0.0 should not be above range <= 2.0.0(<=2.0.0) 3.1.3 should be above range 2.*.* 0.2.4 should not be above range >=0.2.3 <=0.2.4(>=0.2.3 <=0.2.4) 1.2.3 should not be below range 0.1.20 || 1.2.4 1.9999.9999 should not be above range <= 2.0.0(<=2.0.0) 1.2.4 should not be below range 0.1.20 || >1.2.4 0.6.0 should be below range >=0.7.x 1.3.3 should be above range 1.2.x 0.7.0-asdf should be below range =0.7.x 3.5.0 should not be below range ^0.1.0 || ~3.0.1 || >4 <=5.0.0 0.6.0-asdf should be below range =0.7.x 0.2.4 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) 1.2.9 should be below range >2.0.0 1.1.9999 should be below range 1.2.* || 2.* 2.0.0 should not be below range 1.0.0 - 2.0.0 1.0.0-beta should be below range 1 0.7.2 should not be below range >=0.7.x 2.4.1 should be above range 2.3 1.3.0 should be above range ~1.2.2 2.3.0 should be below range ~2.4 2.2.9 should be above range <=2.0.0 0.2.9 should not be below range <=2.0.0 3.0.0 should be above range 2.x.x 2.9.9 should not be below range 1.0.0 - 2.0.0 1.0.0 should not be above range (*) 4.0.0 should not be below range ^3.0.0 2.1.3 should not be below range 2.*.* 1.0.1 should not be above range >= 1.0.0(>=1.0.0) 1.0.0-beta should be above range < 1 1.0.0 should not be below range =0.1.0 0.2.3 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.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 below range * 3.1.3 should be above range 2.x.x 0.0.0 should be below range 1.0.0 0.5.5 should not be below range ~v0.5.4-pre 1.0.0 should not be above range >=1(>=1.0.0) 1.0.1 should not be below range > 1.0.0 4.0.0 should be above range 1.2.* || 2.* 1.2.3 should not be below range ~> 1 0.1.20 should not be below range 0.1.20 || 1.2.4 0.7.0-asdf should not be above range >=0.7.x(>=0.7.0) 1.0.2 should not be below range ~1.0 1.2.3 should not be below range 1.2.x 2.0.0-beta should be above range 1 1.0.0 should be below range 1.2.x || 2.x 1.0.2 should not be above range ~ 1.0(>=1.0.0 <1.1.0) 0.8.2 should be above range =0.7.x 2.3.0 should be below range ~2.4 2.2.3 should be above range ~1 1.2.0 should be below range >1.2 1.3.3 should be above range 1.2.* 0.2.3 should be below range ~1 1.0.0 should not be above range >= 1(>=1.0.0) 1.0.0-beta should not be below range ~1.0.0-alpha 1.2.3 should not be above range *(*) 1.0.1 should not be below range >=1.0.0 1.1.0 should not be above range >= 1.0.0(>=1.0.0) 1.1.0 should not be above range > 1.0.0(>1.0.0) 2.9999.9999 should be above range <2.0.0 1.0.0 should not be below range 1.0.0 1.2.3 should not be below range 1.0.0 - 2.0.0 2.3.5 should be below range ~2.4 1.0.1 should be below range 2.*.* 0.6.1-0 should be below range ~0.6.1-1 1.9999.9999 should not be above range <=2.0.0(<=2.0.0) 1.0.1 should not be above range >1.0.0(>1.0.0) 2.5.0 should be above range ~2.4 1.0.1 should not be above range > 1.0.0(>1.0.0) 2.4.0 should not be below range ~2.4 1.2.3 should not be above range 1.2.*(>=1.2.0 <1.3.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.7.2 should not be above range >=0.7.x(>=0.7.0) 1.2.1 should be below range ~1.2.2 0.6.0 should be above range ~v0.5.4-pre 0.1.97 should not be above range >=0.1.97(>=0.1.97) 2.1.3 should not be above range 1.2.* || 2.*(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) 0.7.2 should not be below range =0.7.x 2.5.5 should be above range ~2.4 2.4.5 should not be above range ~2.4(>=2.4.0 <2.5.0) 1.0.0-beta should be below range 2 1.0.0 should not be above range >= 1.0.0(>=1.0.0) #intersection cannot intersect with non-VersionRanges is commutative 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 & >=7.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 & 5.0.0 - 1.0.0 between 10.0.0 - 5.0.0 & 11.0.0 - 4.0.0 between >=10.0.0 <5.0.0 & >=7.0.0 <1.0.0 between >=10.0.0 <5.0.0 & >=5.0.0 <1.0.0 between >=10.0.0 <5.0.0 & 11.0.0 - 4.0.0 between >=10.0.0 <5.0.0 & 9.0.0 - 6.0.0 between >=10.0.0 <5.0.0 & 6.0.0 - 1.0.0 between 10.0.0 - 5.0.0 & >=5.0.0 <1.0.0 between 10.0.0 - 5.0.0 & 9.0.0 - 6.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 & 4.0.0 - 1.0.0 between >=10.0.0 <5.0.0 & 15.0.0 - 9.0.0 between 10.0.0 - 5.0.0 & 10.0.0 - 5.0.0 between >=10.0.0 <5.0.0 & 10.0.0 - 5.0.0 between 10.0.0 - 5.0.0 & 6.0.0 - 1.0.0 between >=10.0.0 <5.0.0 & 5.0.0 - 1.0.0 between >=10.0.0 <5.0.0 & >=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 & 10.0.0 - 5.0.0 >=5.0.0 <1.0.0 >=10.0.0 <5.0.0 9.0.0 - 6.0.0 11.0.0 - 4.0.0 15.0.0 - 9.0.0 15.0.0 - 11.0.0 5.0.0 - 1.0.0 >=7.0.0 <1.0.0 15.0.0 - 10.0.0 4.0.0 - 1.0.0 6.0.0 - 1.0.0 between >=10.0.0 <5.0.0 & >=10.0.0 <5.0.0 9.0.0 - 6.0.0 15.0.0 - 9.0.0 6.0.0 - 1.0.0 >=7.0.0 <1.0.0 4.0.0 - 1.0.0 15.0.0 - 11.0.0 >=5.0.0 <1.0.0 11.0.0 - 4.0.0 10.0.0 - 5.0.0 15.0.0 - 10.0.0 5.0.0 - 1.0.0 .parse loose version expressions parse("1.2").to_s excludes 1.3.0-0 parse("1.2.3").to_s excludes 1.2.4-alpha parse("1.X").to_s includes 1.999.0 parse("1.2.x").to_s excludes 1.2.0-alpha "1.2" excludes 1.1.999 "1.2.3-alpha" excludes 1.2.3-999 "1.2" excludes 1.3.0-0 parse("1").to_s includes 1.0.0 "1.2.x" includes 1.2.0 "1.2.x" stringifies as >=1.2.0 <1.3.0 "1.2" includes 1.2.0 "1.x" includes 1.0.0 "1.x" excludes 0.999.999 parse("1.2.X").to_s includes 1.2.0 "1.2.X" excludes 1.3.0-0 parse("1").to_s excludes 2.0.0-0 parse("1.2.X").to_s excludes 1.2.0-alpha parse("1.2.X").to_s excludes 1.3.0-0 parse("1.2.3").to_s excludes 1.2.2 parse("1.2").to_s excludes 1.1.999 "1" stringifies as >=1.0.0 <2.0.0 "1.2.3" excludes 1.2.3-alpha parse("1.X").to_s excludes 1.0.0-alpha parse("1.2").to_s includes 1.2.0 "1.2.x" includes 1.2.999 "1.2.X" excludes 1.1.999 "1.2.X" includes 1.2.999 parse("1.2.x").to_s includes 1.2.0 parse("1.X").to_s excludes 2.0.0-0 parse("1.X").to_s excludes 0.999.999 parse("1.2.x").to_s includes 1.2.999 parse("1.2.X").to_s excludes 1.1.999 "1" includes 1.999.0 parse("1.x").to_s excludes 0.999.999 parse("1.2.3").to_s includes 1.2.3 "1.2.X" stringifies as >=1.2.0 <1.3.0 parse("1.2.x").to_s excludes 1.1.999 "1.2.3-alpha" stringifies as 1.2.3-alpha "1.X" excludes 0.999.999 parse("1.2.3").to_s excludes 1.2.3-alpha "1.2.3" includes 1.2.3 parse("1").to_s excludes 0.999.999 "1.X" stringifies as >=1.0.0 <2.0.0 parse("1.x").to_s excludes 1.0.0-alpha "1.X" excludes 2.0.0-0 parse("1").to_s excludes 1.0.0-alpha "1.2.3-alpha" includes 1.2.3-alpha "1.2.x" excludes 1.1.999 "1" excludes 2.0.0-0 parse("1.x").to_s includes 1.999.0 "1.x" includes 1.999.0 "1.x" excludes 1.0.0-alpha parse("1.2").to_s includes 1.2.999 "1.2.3-alpha" excludes 1.2.3-beta "1.x" stringifies as >=1.0.0 <2.0.0 "1.X" includes 1.999.0 parse("1.2").to_s excludes 1.2.0-alpha parse("1.2.X").to_s includes 1.2.999 "1.x" excludes 2.0.0-0 parse("1.x").to_s includes 1.0.0 "1.2" stringifies as >=1.2.0 <1.3.0 "1.2.3" excludes 1.2.4-alpha parse("1.2.x").to_s excludes 1.3.0-0 parse("1").to_s includes 1.999.0 "1" excludes 1.0.0-alpha parse("1.X").to_s includes 1.0.0 "1.2" includes 1.2.999 "1.X" excludes 1.0.0-alpha "1.X" includes 1.0.0 "1" excludes 0.999.999 "1.2.3" excludes 1.2.2 "1" includes 1.0.0 parse("1.2.3-alpha").to_s excludes 1.2.3-beta parse("1.2.3-alpha").to_s excludes 1.2.3-999 "1.2.X" excludes 1.2.0-alpha "1.2" excludes 1.2.0-alpha "1.2.3" stringifies as 1.2.3 parse("1.x").to_s excludes 2.0.0-0 "1.2.x" excludes 1.2.0-alpha parse("1.2.3-alpha").to_s includes 1.2.3-alpha "1.2.x" excludes 1.3.0-0 "1.2.X" includes 1.2.0 unioned expressions ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" includes 4.999.999 ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 3.0.0-0 parse("1 <=1.2.5").to_s includes 1.2.5 "1 <=1.2.5" excludes 0.999.999 ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" stringifies as >=3.0.0 <5.0.0 "1 <=1.2.5" includes 1.2.5 parse("1 <=1.2.5").to_s excludes 1.9.0 "<1.0.0 >2.0.0" excludes 0.0.0-0 "<1.0.0 >2.0.0" stringifies as <0.0.0 parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 3.0.0-0 "1.2 <1.2.5" excludes 1.2.0-0 "1 <=1.2.5" excludes 1.9.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 2.999.999 "<1.0.0 >2.0.0" excludes 0.0.0 parse("1.2 <1.2.5").to_s excludes 1.9.0 ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 5.0.0-0 parse("1.2 <1.2.5").to_s excludes 1.2.5-0 parse("1.2 <1.2.5").to_s excludes 1.2.0-0 parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s includes 4.999.999 parse("1 <=1.2.5").to_s excludes 0.999.999 "1 <=1.2.5" stringifies as >=1.0.0 <=1.2.5 parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 2.999.999 "1 <=1.2.5" includes 1.0.0 parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 5.0.0-0 parse("1 <=1.2.5").to_s excludes 1.2.6-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" includes 1.2.0 "1.2 <1.2.5" includes 1.2.4 "1.2 <1.2.5" excludes 1.2.5-0 parse("1.2 <1.2.5").to_s includes 1.2.0 parse("1 <=1.2.5").to_s excludes 1.0.0-0 "1 <=1.2.5" excludes 1.2.6-0 parse("1.2 <1.2.5").to_s includes 1.2.4 parse("<1.0.0 >2.0.0").to_s excludes 0.0.0 "1 <=1.2.5" excludes 1.0.0-0 parse("1 <=1.2.5").to_s includes 1.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 "1.2 <1.2.5" excludes 1.1.999 ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" includes 3.0.0 "1.2 <1.2.5" excludes 1.9.0 invalid expressions raise an appropriate exception open-ended expressions parse(">= 1.2.3").to_s includes 999.0.0 parse(">1.2.3").to_s excludes 1.2.4-0 parse(">=1.2.3-alpha").to_s includes 1.2.3-alpha parse(">= 1.2.3-alpha").to_s excludes 1.2.4-alpha ">=1.2.3" excludes 1.2.2 parse("> 1.2.3-alpha").to_s excludes 1.2.3-alpha parse("<1.2.3-alpha").to_s includes 0.0.0 "<= 1.2.3" excludes 0.0.0-0 parse("<=1.2.3-alpha").to_s includes 1.2.3-alpha parse("<= 1.2.3-alpha").to_s excludes 0.0.0-0 parse("> 1.2.3").to_s includes 999.0.0 parse(">=1.2.3-alpha").to_s includes 999.0.0 "> 1.2.3" stringifies as >1.2.3 ">=1.2.3-alpha" includes 1.2.3-alpha0 parse("<1.2.3-alpha").to_s excludes 1.2.3-alpha ">= 1.2.3" stringifies as >=1.2.3 "< 1.2.3" excludes 0.0.0-0 "< 1.2.3-alpha" excludes 0.0.0-0 "< 1.2.3" excludes 1.2.3-0 parse("<=1.2.3").to_s excludes 0.0.0-0 parse("< 1.2.3").to_s includes 1.2.2 parse(">= 1.2.3").to_s excludes 1.2.3-0 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" excludes 1.2.3-0 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" excludes 1.2.3-alphb "> 1.2.3" excludes 1.2.3 "> 1.2.3-alpha" includes 1.2.3-alpha.0 "<= 1.2.3" includes 0.0.0 parse(">=1.2.3").to_s includes 999.0.0 "<1.2.3-alpha" excludes 2.0.0 parse("<=1.2.3-alpha").to_s excludes 1.2.3-alphb ">1.2.3-alpha" includes 1.2.3-alpha.0 "<1.2.3-alpha" includes 1.2.3-alph ">= 1.2.3-alpha" includes 1.2.3-alpha "> 1.2.3" includes 999.0.0 "< 1.2.3-alpha" includes 1.2.3-alph ">= 1.2.3" includes 999.0.0 parse("< 1.2.3").to_s excludes 2.0.0 ">= 1.2.3" excludes 1.2.2 parse("<1.2.3-alpha").to_s excludes 0.0.0-0 ">=1.2.3-alpha" excludes 1.2.4-alpha "<=1.2.3-alpha" stringifies as <=1.2.3-alpha "<=1.2.3-alpha" excludes 0.0.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.4-alpha ">1.2.3-alpha" includes 1.2.3-alpha0 ">=1.2.3" includes 999.0.0 ">1.2.3" stringifies as >1.2.3 parse(">=1.2.3").to_s excludes 1.2.3-0 ">=1.2.3-alpha" excludes 1.2.3-alph "> 1.2.3-alpha" includes 999.0.0 parse("< 1.2.3-alpha").to_s includes 1.2.3-alph parse("< 1.2.3-alpha").to_s excludes 2.0.0 "< 1.2.3" includes 1.2.2 parse("<= 1.2.3-alpha").to_s includes 0.0.0 "<1.2.3" stringifies as <1.2.3 parse("> 1.2.3").to_s excludes 1.2.4-0 parse(">=1.2.3-alpha").to_s excludes 1.2.4-alpha parse("<1.2.3").to_s excludes 2.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 parse(">= 1.2.3-alpha").to_s includes 999.0.0 "<=1.2.3-alpha" includes 0.0.0 ">= 1.2.3-alpha" includes 1.2.3-alpha0 "> 1.2.3" excludes 1.2.4-0 ">= 1.2.3-alpha" excludes 1.2.3-alph parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha0 parse("<=1.2.3").to_s includes 0.0.0 parse("< 1.2.3-alpha").to_s excludes 0.0.0-0 "<= 1.2.3-alpha" excludes 1.2.3-alphb ">= 1.2.3" excludes 1.2.3-0 "< 1.2.3" stringifies as <1.2.3 "<= 1.2.3-alpha" stringifies as <=1.2.3-alpha "<= 1.2.3" excludes 1.2.3-0 parse(">1.2.3-alpha").to_s includes 1.2.3-alpha0 "<1.2.3-alpha" includes 0.0.0 parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha0 "< 1.2.3-alpha" excludes 1.2.3-alpha parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha.0 parse("> 1.2.3-alpha").to_s includes 999.0.0 "< 1.2.3" excludes 2.0.0 ">=1.2.3-alpha" stringifies as >=1.2.3-alpha parse("<= 1.2.3-alpha").to_s includes 1.2.3-alpha parse("<1.2.3").to_s excludes 0.0.0-0 "<=1.2.3-alpha" excludes 1.2.3-alpha0 ">1.2.3-alpha" includes 999.0.0 ">=1.2.3-alpha" includes 999.0.0 parse("< 1.2.3").to_s excludes 0.0.0-0 "<=1.2.3" excludes 0.0.0-0 parse("<1.2.3").to_s includes 1.2.2 "<= 1.2.3-alpha" excludes 1.2.3-alpha0 parse(">1.2.3").to_s includes 999.0.0 "<1.2.3" excludes 1.2.3-0 "<1.2.3-alpha" stringifies as <1.2.3-alpha "<1.2.3-alpha" excludes 1.2.3-alpha 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" includes 0.0.0 "< 1.2.3-alpha" excludes 2.0.0 parse(">= 1.2.3").to_s excludes 1.2.2 "<1.2.3-alpha" excludes 0.0.0-0 parse("> 1.2.3-alpha").to_s includes 1.2.3-alpha.0 parse("<1.2.3-alpha").to_s includes 1.2.3-alph "<= 1.2.3-alpha" excludes 0.0.0-0 "<= 1.2.3" includes 1.2.3 parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha "< 1.2.3-alpha" stringifies as <1.2.3-alpha "<= 1.2.3-alpha" includes 0.0.0 "< 1.2.3-alpha" includes 0.0.0 parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha.0 parse(">=1.2.3").to_s excludes 1.2.2 "<1.2.3" includes 0.0.0 "<=1.2.3" stringifies as <=1.2.3 "<= 1.2.3-alpha" includes 1.2.3-alpha "<=1.2.3-alpha" includes 1.2.3-alpha "> 1.2.3-alpha" excludes 1.2.3-alpha parse("<1.2.3").to_s excludes 1.2.3-0 parse(">=1.2.3-alpha").to_s excludes 1.2.3-alph "<1.2.3" includes 1.2.2 parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alphb parse("< 1.2.3").to_s excludes 1.2.3-0 "> 1.2.3-alpha" includes 1.2.3-alpha0 parse("<= 1.2.3").to_s excludes 0.0.0-0 ">= 1.2.3-alpha" stringifies as >=1.2.3-alpha parse("<=1.2.3-alpha").to_s excludes 0.0.0-0 parse("< 1.2.3-alpha").to_s excludes 1.2.3-alpha ">=1.2.3" excludes 1.2.3-0 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" excludes 1.2.3-alpha.0 parse("<= 1.2.3").to_s includes 0.0.0 parse("<=1.2.3").to_s excludes 1.2.3-0 parse("<1.2.3-alpha").to_s excludes 2.0.0 ">1.2.3-alpha" stringifies as >1.2.3-alpha parse("<=1.2.3").to_s includes 1.2.3 parse("> 1.2.3-alpha").to_s includes 1.2.3-alpha0 parse("< 1.2.3").to_s includes 0.0.0 "<1.2.3" excludes 0.0.0-0 ">= 1.2.3-alpha" includes 999.0.0 ">1.2.3" excludes 1.2.4-0 "<1.2.3" excludes 2.0.0 "<=1.2.3" includes 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-alph parse("<=1.2.3-alpha").to_s includes 0.0.0 "<=1.2.3" includes 0.0.0 ">1.2.3" includes 999.0.0 "<= 1.2.3-alpha" excludes 1.2.3-alpha.0 ">=1.2.3-alpha" includes 1.2.3-alpha parse("<1.2.3").to_s includes 0.0.0 parse("<= 1.2.3").to_s includes 1.2.3 inclusive range expressions "1.2.3-alpha - 1.3.4-alpha" includes 1.2.3-alpha "1.2.3 - 1.3.4" includes 1.3.4 parse("1.2.3-alpha - 1.3.4").to_s excludes 1.2.3-alph "1.2.3 - 1.3.4" excludes 1.2.2 "1.2.3-alpha - 1.3.4-alpha" 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 includes 1.3.4 "1.2.3-alpha - 1.3.4" stringifies as >=1.2.3-alpha <=1.3.4 "1.2.3-alpha - 1.3.4-alpha" includes 1.3.4-alpha parse("1.2.3-alpha - 1.3.4").to_s includes 1.3.4 parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.3.5 parse("1.2.3 - 1.3.4").to_s excludes 1.2.2 "1.2.3-alpha - 1.3.4" includes 1.3.4 parse("1.2.3 - 1.3.4").to_s includes 1.2.3 "1.2.3-alpha - 1.3.4" includes 1.2.3-alpha parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.5 "1.2.3 - 1.3.4-alpha" includes 1.3.4-alpha parse("1.2.3-alpha - 1.3.4").to_s includes 1.2.3-alpha parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.3.4-alpha0 parse("1.2.3 - 1.3.4-alpha").to_s includes 1.3.4-alpha "1.2.3 - 1.3.4" excludes 1.2.3-0 parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.2.2 "1.2.3 - 1.3.4-alpha" excludes 1.2.2 parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.4-alpha0 parse("1.2.3-alpha - 1.3.4-alpha").to_s includes 1.2.3-alpha "1.2.3 - 1.3.4-alpha" excludes 1.3.5 "1.2.3 - 1.3.4" includes 1.2.3 "1.2.3 - 1.3.4-alpha" includes 1.2.3 "1.2.3 - 1.3.4" stringifies as >=1.2.3 <=1.3.4 parse("1.2.3 - 1.3.4").to_s excludes 1.3.5-0 "1.2.3 - 1.3.4-alpha" stringifies as >=1.2.3 <=1.3.4-alpha "1.2.3 - 1.3.4-alpha" excludes 1.3.4-alpha0 parse("1.2.3-alpha - 1.3.4-alpha").to_s includes 1.3.4-alpha "1.2.3 - 1.3.4-alpha" excludes 1.2.3-0 parse("1.2.3 - 1.3.4-alpha").to_s includes 1.2.3 "1.2.3-alpha - 1.3.4-alpha" excludes 1.2.3-alph "1.2.3-alpha - 1.3.4-alpha" stringifies as >=1.2.3-alpha <=1.3.4-alpha parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.2.3-alph "1.2.3-alpha - 1.3.4" excludes 1.3.5-0 "1.2.3 - 1.3.4" excludes 1.3.5-0 parse("1.2.3 - 1.3.4").to_s excludes 1.2.3-0 parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.2.3-0 parse("1.2.3-alpha - 1.3.4").to_s excludes 1.3.5-0 ored expressions adjacent parse("1.2.3 || 1.2.4 || 1.2.5").to_s excludes 1.2.3-0 parse("1.2.3 || 1.2.4 || 1.2.5").to_s includes 1.2.5 parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.3 "1.2.3 || 1.2.4 || 1.2.5" excludes 1.2.3-0 parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.6-0 ">=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" includes 1.2.5 returns nil on exclude_begin? 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.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 returns nil on exclude_end? ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.6-0 returns expected begin ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" stringifies as >=1.2.3 <1.3.0 "1.2.3 || 1.2.4 || 1.2.5" excludes 1.2.5-0 parse("1.2.3 || 1.2.4 || 1.2.5").to_s includes 1.2.3 parse("1.2.3 || 1.2.4 || 1.2.5").to_s excludes 1.2.5-0 "1.2.3 || 1.2.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 non-overlapping returns nil on exclude_begin? parse("1.2.3 || 1.2.5").to_s includes 1.2.5 returns nil on begin "1.2.3 || 1.2.5" includes 1.2.5 "1.2.3 || 1.2.5" excludes 1.2.3-0 parse("1.2.3 || 1.2.5").to_s excludes 1.2.3-0 parse("1.2.3 || 1.2.5").to_s excludes 1.2.4 "1.2.3 || 1.2.5" excludes 1.2.5-0 parse("1.2.3 || 1.2.5").to_s excludes 1.2.5-0 "1.2.3 || 1.2.5" excludes 1.2.4 "1.2.3 || 1.2.5" includes 1.2.3 "1.2.3 || 1.2.5" stringifies as 1.2.3 || 1.2.5 returns nil on end returns nil on exclude_end? parse("1.2.3 || 1.2.5").to_s includes 1.2.3 overlapping ">=1.2.3 || 1.2.5" excludes 1.2.4-0 parse(">=1.2.3 || 1.2.5").to_s includes 1.2.4 ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" includes 1.2.6 parse(">=1.2.3 || 1.2.5").to_s excludes 1.2.4-0 parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.6 ">=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 ">=1.2.3 || 1.2.5" includes 1.2.4 ">=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 excludes 1.2.3-0 ">=1.2.3 || 1.2.5" includes 1.2.3 parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.3 ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" includes 1.2.3 ">=1.2.3 || 1.2.5" stringifies as >=1.2.3 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" 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.6-0 ">=1.2.3 || 1.2.5" excludes 1.2.3-0 "reasonably close" expressions parse("~1.2.3-alpha").to_s excludes 1.2.4-0 parse("~ 1.2.3-alpha").to_s includes 1.2.3 "~ 1" excludes 1.0.0-0 parse("~ 1.2").to_s excludes 1.1.999 "~ 1.2.3-alpha" includes 1.2.3 "~1.2.3" excludes 1.3.0-0 "~1" includes 1.0.0 "~ 1" includes 1.0.0 "~1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 "~1.2.3" excludes 1.2.2 "~1.2.3" includes 1.2.3 parse("~1.2.3-alpha").to_s includes 1.2.3-alpha "~ 1.2.3-alpha" excludes 1.2.3-alph "~ 1.2.3" excludes 1.2.2 parse("~ 1").to_s excludes 1.0.0-0 parse("~1.2.3").to_s excludes 1.3.0-0 parse("~1.2").to_s includes 1.2.0 "~ 1.2.3" includes 1.2.5 parse("~ 1").to_s includes 1.999.999 parse("~ 1").to_s excludes 2.0.0-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 excludes 1.2.3-alph parse("~ 1.2.3-alpha").to_s includes 1.2.3-alpha "~ 1.2.3" stringifies as >=1.2.3 <1.3.0 parse("~1.2").to_s excludes 1.1.999 parse("~ 1.2.3").to_s includes 1.2.3 parse("~1.2.3").to_s includes 1.2.5 parse("~1").to_s includes 1.0.0 "~ 1.2.3" includes 1.2.3 parse("~1.2.3-alpha").to_s excludes 1.2.3-alph parse("~1").to_s excludes 0.999.999 "~1.2" excludes 1.3.0-0 "~ 1.2" includes 1.2.0 "~1.2.3-alpha" includes 1.2.3 "~1.2.3" stringifies as >=1.2.3 <1.3.0 parse("~1.2").to_s excludes 1.2.0-0 parse("~1.2.3").to_s excludes 1.2.2 parse("~ 1.2.3").to_s includes 1.2.5 parse("~ 1.2").to_s excludes 1.3.0-0 "~ 1" stringifies as >=1.0.0 <2.0.0 "~1" excludes 2.0.0-0 parse("~ 1.2.3").to_s excludes 1.2.3-0 "~1.2" excludes 1.2.0-0 parse("~ 1").to_s includes 1.0.0 "~ 1.2" excludes 1.2.0-0 "~1.2.3" includes 1.2.5 "~1" excludes 0.999.999 parse("~1").to_s includes 1.999.999 parse("~1.2.3").to_s excludes 1.2.3-0 parse("~ 1.2").to_s includes 1.2.0 "~1.2.3-alpha" excludes 1.2.4-0 "~1.2.3" excludes 1.2.3-0 "~1.2" excludes 1.1.999 "~1" stringifies as >=1.0.0 <2.0.0 parse("~1").to_s excludes 1.0.0-0 "~ 1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 "~ 1.2" excludes 1.3.0-0 parse("~ 1").to_s excludes 0.999.999 parse("~ 1.2.3").to_s excludes 1.2.2 "~ 1.2.3-alpha" excludes 1.2.4-0 "~1" includes 1.999.999 parse("~1.2.3").to_s includes 1.2.3 parse("~ 1.2.3-alpha").to_s excludes 1.2.4-0 parse("~1.2.3-alpha").to_s includes 1.2.3 parse("~ 1.2").to_s includes 1.2.999 "~1" excludes 1.0.0-0 parse("~ 1.2").to_s excludes 1.2.0-0 "~ 1" excludes 0.999.999 "~1.2.3-alpha" excludes 1.2.3-alph "~1.2.3-alpha" includes 1.2.3-alpha "~ 1.2" excludes 1.1.999 "~ 1" includes 1.999.999 parse("~1.2").to_s includes 1.2.999 parse("~1.2").to_s excludes 1.3.0-0 "~1.2" stringifies as >=1.2.0 <1.3.0 parse("~ 1.2.3").to_s excludes 1.3.0-0 "~1.2" includes 1.2.999 "~ 1.2.3-alpha" includes 1.2.3-alpha "~ 1.2" includes 1.2.999 "~1.2" includes 1.2.0 "~ 1.2.3" excludes 1.2.3-0 "~ 1" excludes 2.0.0-0 parse("~1").to_s excludes 2.0.0-0 SemanticPuppet::Dependency::UnsatisfiableGraph #message is expected to match /foo, bar, and baz/ #sentence_from_list 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" 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" SemanticPuppet::Dependency::ModuleRelease #satisfies_dependency? returns false when the release does not match the dependency version returns true when the release matches the dependency returns false when there are no dependencies to satisfy returns false when the release does not match the dependency name #<=> considers releases with greater version numbers greater considers releases with lesser version numbers lesser orders releases with different names lexographically orders releases by name first #== considers two releases with different names to be different considers two equal releases to be equal can compare a release with something that is not a release considers two releases with different versions to be different considers a release different from something that is not a release #satisfied? returns false when not all dependencies have been satisified returns true when there are no dependencies to satisfy returns true when all dependencies have been satisified returns false when no dependencies have been satisified returns false when not all dependency versions have been satisified #<< does not mark mis-matching dependency versions as satisfied marks matching dependencies as satisfied does not mark mis-matching dependency names as satisfied #dependency_names lists the names of all the release's dependencies #to_s is expected to =~ /foobarbaz/ is expected to =~ /1.2.3/ SemanticPuppet::Dependency::GraphNode #satisfied is unsatisfied when no nodes have been appended is satisfied when all dependencies are fulfilled is unsatisfied when any dependencies are missing #<=> can be compared #<< appends satisfying nodes to the dependencies does not append nodes with unknown names does not append unsatisfying nodes dependencies are maintained in the #dependencies Hash are added by #add_dependency #populate_children accepts a graph solution and populates it across all nodes saves all relevant nodes as its children Finished in 0.52284 seconds (files took 0.44197 seconds to load) 985 examples, 0 failures Randomized with seed 49209 ┌──────────────────────────────────────────────────────────────────────────────┐ │ dh_ruby --install finished │ └──────────────────────────────────────────────────────────────────────────────┘ dh_installdocs -i -O--buildsystem=ruby dh_ruby_fixdocs -i -O--buildsystem=ruby dh_installchangelogs -i -O--buildsystem=ruby 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.3-1_all.deb'. dpkg-genbuildinfo --build=all dpkg-genchanges --build=all >../ruby-semantic-puppet_1.0.3-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-DKo2iW /tmp/ruby-semantic-puppet-1.0.3-1d5uxtz2z I: cleaning package lists and apt cache... I: creating tarball... I: done I: removing tempdir /tmp/mmdebstrap.qUUQ2zew41... I: success in 374.2724 seconds md5: ruby-semantic-puppet_1.0.3-1_all.deb: OK sha1: ruby-semantic-puppet_1.0.3-1_all.deb: OK sha256: ruby-semantic-puppet_1.0.3-1_all.deb: OK Checksums: OK