####################################################### ## 2018-01-23T19:05:39+00:00 ## Building ruby-mustermann19 ####################################################### ####################################################### ## 2018-01-23T19:05:39+00:00 ## System state ####################################################### WARNING: apt does not have a stable CLI interface. Use with caution in scripts. Listing... adduser/unstable,now 3.116 all [installed,automatic] apt/unstable,now 1.6~alpha7 amd64 [installed,automatic] apt-file/unstable,now 3.1.5 all [installed,automatic] apt-utils/unstable,now 1.6~alpha7 amd64 [installed] at/unstable,now 3.1.20-3.1 amd64 [installed,automatic] autoconf/unstable,now 2.69-11 all [installed,automatic] automake/unstable,now 1:1.15.1-3 all [installed,automatic] autopoint/unstable,now 0.19.8.1-4 all [installed,automatic] autotools-dev/unstable,now 20171216.1 all [installed,automatic] base-files/unstable,now 10.1 amd64 [installed,automatic] base-passwd/unstable,now 3.5.44 amd64 [installed,automatic] bash/unstable,now 4.4-5 amd64 [installed] binutils/unstable,now 2.29.1-13 amd64 [installed,automatic] binutils-common/unstable,now 2.29.1-13 amd64 [installed,automatic] binutils-x86-64-linux-gnu/unstable,now 2.29.1-13 amd64 [installed,automatic] bsdmainutils/unstable,now 11.1.2 amd64 [installed,automatic] bsdutils/unstable,now 1:2.30.2-0.3 amd64 [installed,automatic] build-essential/unstable,now 12.4 amd64 [installed] bzip2/unstable,now 1.0.6-8.1 amd64 [installed,automatic] ca-certificates/unstable,now 20170717 all [installed,automatic] coreutils/unstable,now 8.28-1 amd64 [installed,automatic] cpp/unstable,now 4:7.2.0-1d1 amd64 [installed,automatic] cpp-7/unstable,now 7.2.0-19 amd64 [installed,automatic] cron/unstable,now 3.0pl1-128.1 amd64 [installed,automatic] curl/unstable,now 7.57.0-1 amd64 [installed,automatic] dash/unstable,now 0.5.8-2.5 amd64 [installed,automatic] dctrl-tools/unstable,now 2.24-2+b1 amd64 [installed,automatic] debconf/unstable,now 1.5.65 all [installed,automatic] debhelper/unstable,now 11.1.3 all [installed] debian-archive-keyring/unstable,now 2017.7 all [installed,automatic] debian-keyring/unstable,now 2017.11.24 all [installed,automatic] debianutils/unstable,now 4.8.4 amd64 [installed,automatic] devscripts/unstable,now 2.17.12 amd64 [installed,automatic] dh-autoreconf/unstable,now 15 all [installed] dh-python/unstable,now 2.20170125 all [installed,automatic] dh-strip-nondeterminism/unstable,now 0.040-1 all [installed,automatic] diffstat/unstable,now 1.61-1+b1 amd64 [installed,automatic] diffutils/unstable,now 1:3.6-1 amd64 [installed,automatic] dirmngr/unstable,now 2.2.4-1 amd64 [installed,automatic] distro-info-data/unstable,now 0.37 all [installed,automatic] dpkg/unstable,now 1.19.0.5 amd64 [installed,automatic] dpkg-dev/unstable,now 1.19.0.5 all [installed,automatic] dput/unstable,now 1.0.1 all [installed,automatic] e2fslibs/unstable,now 1.43.8-2 amd64 [installed,automatic] e2fsprogs/unstable,now 1.43.8-2 amd64 [installed,automatic] eatmydata/unstable,now 105-5 all [installed] equivs/unstable,now 2.1.0 all [installed,automatic] exim4-base/unstable,now 4.90-4 amd64 [installed,automatic] exim4-config/unstable,now 4.90-4 all [installed,automatic] exim4-daemon-light/unstable,now 4.90-4 amd64 [installed,automatic] fakeroot/unstable,now 1.22-2 amd64 [installed,automatic] fdisk/unstable,now 2.30.2-0.3 amd64 [installed,automatic] file/unstable,now 1:5.32-1 amd64 [installed,automatic] findutils/unstable,now 4.6.0+git+20170828-2 amd64 [installed,automatic] fontconfig-config/unstable,now 2.12.6-0.1 all [installed,automatic] fonts-dejavu-core/unstable,now 2.37-1 all [installed,automatic] fonts-lato/unstable,now 2.0-2 all [installed,automatic] g++/unstable,now 4:7.2.0-1d1 amd64 [installed,automatic] g++-7/unstable,now 7.2.0-19 amd64 [installed,automatic] gcc/unstable,now 4:7.2.0-1d1 amd64 [installed,automatic] gcc-5-base/unstable,now 5.5.0-6 amd64 [installed,automatic] gcc-6-base/unstable,now 6.4.0-11 amd64 [installed,automatic] gcc-7/unstable,now 7.2.0-19 amd64 [installed,automatic] gcc-7-base/unstable,now 7.2.0-19 amd64 [installed,automatic] gem2deb/unstable,now 0.36 amd64 [installed] gem2deb-test-runner/unstable,now 0.36 amd64 [installed,automatic] gettext/unstable,now 0.19.8.1-4 amd64 [installed,automatic] gettext-base/unstable,now 0.19.8.1-4 amd64 [installed,automatic] git/unstable,now 1:2.15.1-3 amd64 [installed,automatic] git-man/unstable,now 1:2.15.1-3 all [installed,automatic] gnupg/unstable,now 2.2.4-1 amd64 [installed,automatic] gnupg-l10n/unstable,now 2.2.4-1 all [installed,automatic] gnupg-utils/unstable,now 2.2.4-1 amd64 [installed,automatic] gpg/unstable,now 2.2.4-1 amd64 [installed,automatic] gpg-agent/unstable,now 2.2.4-1 amd64 [installed,automatic] gpg-wks-client/unstable,now 2.2.4-1 amd64 [installed,automatic] gpg-wks-server/unstable,now 2.2.4-1 amd64 [installed,automatic] gpgconf/unstable,now 2.2.4-1 amd64 [installed,automatic] gpgsm/unstable,now 2.2.4-1 amd64 [installed,automatic] gpgv/unstable,now 2.2.4-1 amd64 [installed,automatic] grep/unstable,now 3.1-2 amd64 [installed,automatic] groff-base/unstable,now 1.22.3-9 amd64 [installed,automatic] guile-2.0-libs/unstable,now 2.0.13+1-5 amd64 [installed,automatic] gzip/unstable,now 1.6-5+b1 amd64 [installed,automatic] hostname/unstable,now 3.18+b1 amd64 [installed,automatic] inetutils-ping/unstable,now 2:1.9.4-3 amd64 [installed] init-system-helpers/unstable,now 1.51 all [installed,automatic] intltool-debian/unstable,now 0.35.0+20060710.4 all [installed,automatic] iproute2/unstable,now 4.14.1-1 amd64 [installed] iso-codes/unstable,now 3.77-1 all [installed,automatic] javascript-common/unstable,now 11 all [installed,automatic] krb5-locales/unstable,now 1.16-2 all [installed,automatic] less/unstable,now 487-0.1 amd64 [installed,automatic] libacl1/unstable,now 2.2.52-3+b1 amd64 [installed,automatic] libapt-inst2.0/unstable,now 1.6~alpha7 amd64 [installed,automatic] libapt-pkg-perl/unstable,now 0.1.33 amd64 [installed,automatic] libapt-pkg5.0/unstable,now 1.6~alpha7 amd64 [installed,automatic] libarchive-cpio-perl/unstable,now 0.10-1 all [installed,automatic] libarchive-zip-perl/unstable,now 1.60-1 all [installed,automatic] libasan4/unstable,now 7.2.0-19 amd64 [installed,automatic] libassuan0/unstable,now 2.5.1-1 amd64 [installed,automatic] libatomic1/unstable,now 7.2.0-19 amd64 [installed,automatic] libattr1/unstable,now 1:2.4.47-2+b2 amd64 [installed,automatic] libaudit-common/unstable,now 1:2.8.2-1 all [installed,automatic] libaudit1/unstable,now 1:2.8.2-1 amd64 [installed,automatic] libauthen-sasl-perl/unstable,now 2.1600-1 all [installed,automatic] libb-hooks-endofscope-perl/unstable,now 0.21-1 all [installed,automatic] libb-hooks-op-check-perl/unstable,now 0.22-1 amd64 [installed,automatic] libbinutils/unstable,now 2.29.1-13 amd64 [installed,automatic] libblkid1/unstable,now 2.30.2-0.3 amd64 [installed,automatic] libbsd0/unstable,now 0.8.7-1 amd64 [installed,automatic] libbz2-1.0/unstable,now 1.0.6-8.1 amd64 [installed,automatic] libc-bin/unstable,now 2.26-4 amd64 [installed,automatic] libc-dev-bin/unstable,now 2.26-4 amd64 [installed,automatic] libc6/unstable,now 2.26-4 amd64 [installed,automatic] libc6-dev/unstable,now 2.26-4 amd64 [installed,automatic] libcap-ng0/unstable,now 0.7.7-3.1+b1 amd64 [installed,automatic] libcc1-0/unstable,now 7.2.0-19 amd64 [installed,automatic] libcgi-fast-perl/unstable,now 1:2.13-1 all [installed,automatic] libcgi-pm-perl/unstable,now 4.38-1 all [installed,automatic] libcilkrts5/unstable,now 7.2.0-19 amd64 [installed,automatic] libclass-accessor-perl/unstable,now 0.51-1 all [installed,automatic] libclass-inspector-perl/unstable,now 1.32-1 all [installed,automatic] libclass-method-modifiers-perl/unstable,now 2.12-1 all [installed,automatic] libclass-xsaccessor-perl/unstable,now 1.19-2+b11 amd64 [installed,automatic] libclone-perl/unstable,now 0.39-1 amd64 [installed,automatic] libcomerr2/unstable,now 1.43.8-2 amd64 [installed,automatic] libconvert-binhex-perl/unstable,now 1.125-1 all [installed,automatic] libcroco3/unstable,now 0.6.12-2 amd64 [installed,automatic] libcurl3/unstable,now 7.57.0-1 amd64 [installed,automatic] libcurl3-gnutls/unstable,now 7.57.0-1 amd64 [installed,automatic] libdata-dump-perl/unstable,now 1.23-1 all [installed,automatic] libdata-optlist-perl/unstable,now 0.110-1 all [installed,automatic] libdb5.3/unstable,now 5.3.28-13.1+b1 amd64 [installed,automatic] libdebconfclient0/unstable,now 0.238 amd64 [installed,automatic] libdevel-callchecker-perl/unstable,now 0.007-2+b1 amd64 [installed,automatic] libdevel-globaldestruction-perl/unstable,now 0.14-1 all [installed,automatic] libdigest-hmac-perl/unstable,now 1.03+dfsg-1 all [installed,automatic] libdistro-info-perl/unstable,now 0.17 all [installed,automatic] libdpkg-perl/unstable,now 1.19.0.5 all [installed,automatic] libdynaloader-functions-perl/unstable,now 0.003-1 all [installed,automatic] libeatmydata1/unstable,now 105-5 amd64 [installed,automatic] libedit2/unstable,now 3.1-20170329-1 amd64 [installed,automatic] libelf1/unstable,now 0.170-0.2 amd64 [installed,automatic] libemail-valid-perl/unstable,now 1.202-1 all [installed,automatic] libencode-locale-perl/unstable,now 1.05-1 all [installed,automatic] liberror-perl/unstable,now 0.17025-1 all [installed,automatic] libexpat1/unstable,now 2.2.5-3 amd64 [installed,automatic] libexporter-tiny-perl/unstable,now 1.000000-2 all [installed,automatic] libfakeroot/unstable,now 1.22-2 amd64 [installed,automatic] libfcgi-perl/unstable,now 0.78-2+b2 amd64 [installed,automatic] libfdisk1/unstable,now 2.30.2-0.3 amd64 [installed,automatic] libffi6/unstable,now 3.2.1-8 amd64 [installed,automatic] libfile-basedir-perl/unstable,now 0.07-1 all [installed,automatic] libfile-chdir-perl/unstable,now 0.1008-1 all [installed,automatic] libfile-homedir-perl/unstable,now 1.002-1 all [installed,automatic] libfile-listing-perl/unstable,now 6.04-1 all [installed,automatic] libfile-stripnondeterminism-perl/unstable,now 0.040-1 all [installed,automatic] libfile-which-perl/unstable,now 1.21-1 all [installed,automatic] libfont-afm-perl/unstable,now 1.20-2 all [installed,automatic] libfontconfig1/unstable,now 2.12.6-0.1 amd64 [installed,automatic] libfreetype6/unstable,now 2.8.1-1 amd64 [installed,automatic] libfribidi0/unstable,now 0.19.7-2 amd64 [installed,automatic] libgc1c2/unstable,now 1:7.4.2-8.1 amd64 [installed,automatic] libgcc-7-dev/unstable,now 7.2.0-19 amd64 [installed,automatic] libgcc1/unstable,now 1:7.2.0-19 amd64 [installed,automatic] libgcrypt20/unstable,now 1.8.1-4 amd64 [installed,automatic] libgdbm3/unstable,now 1.8.3-14 amd64 [installed,automatic] libgetopt-long-descriptive-perl/unstable,now 0.100-1 all [installed,automatic] libgit-wrapper-perl/unstable,now 0.047-1 all [installed,automatic] libglib2.0-0/unstable,now 2.54.3-2 amd64 [installed,automatic] libglib2.0-data/unstable,now 2.54.3-2 all [installed,automatic] libgmp-dev/unstable,now 2:6.1.2+dfsg-1.2 amd64 [installed,automatic] libgmp10/unstable,now 2:6.1.2+dfsg-1.2 amd64 [installed,automatic] libgmpxx4ldbl/unstable,now 2:6.1.2+dfsg-1.2 amd64 [installed,automatic] libgnutls30/unstable,now 3.5.17-1 amd64 [installed,automatic] libgomp1/unstable,now 7.2.0-19 amd64 [installed,automatic] libgpg-error0/unstable,now 1.27-5 amd64 [installed,automatic] libgpgme11/unstable,now 1.10.0-1 amd64 [installed,automatic] libgpm2/unstable,now 1.20.7-4 amd64 [installed,automatic] libgsasl7/unstable,now 1.8.0-8+b2 amd64 [installed,automatic] libgssapi-krb5-2/unstable,now 1.16-2 amd64 [installed,automatic] libhogweed4/unstable,now 3.4-1 amd64 [installed,automatic] libhtml-form-perl/unstable,now 6.03-1 all [installed,automatic] libhtml-format-perl/unstable,now 2.12-1 all [installed,automatic] libhtml-parser-perl/unstable,now 3.72-3+b2 amd64 [installed,automatic] libhtml-tagset-perl/unstable,now 3.20-3 all [installed,automatic] libhtml-tree-perl/unstable,now 5.07-1 all [installed,automatic] libhttp-cookies-perl/unstable,now 6.04-1 all [installed,automatic] libhttp-daemon-perl/unstable,now 6.01-1 all [installed,automatic] libhttp-date-perl/unstable,now 6.02-1 all [installed,automatic] libhttp-message-perl/unstable,now 6.14-1 all [installed,automatic] libhttp-negotiate-perl/unstable,now 6.00-2 all [installed,automatic] libicu57/unstable,now 57.1-8 amd64 [installed,automatic] libidn11/unstable,now 1.33-2.1 amd64 [installed,automatic] libidn2-0/unstable,now 2.0.4-1.1 amd64 [installed,automatic] libimport-into-perl/unstable,now 1.002005-1 all [installed,automatic] libio-html-perl/unstable,now 1.001-1 all [installed,automatic] libio-pty-perl/unstable,now 1:1.08-1.1+b4 amd64 [installed,automatic] libio-sessiondata-perl/unstable,now 1.03-1 all [installed,automatic] libio-socket-inet6-perl/unstable,now 2.72-2 all [installed,automatic] libio-socket-ssl-perl/unstable,now 2.052-1 all [installed,automatic] libio-string-perl/unstable,now 1.08-3 all [installed,automatic] libio-stringy-perl/unstable,now 2.111-2 all [installed,automatic] libipc-run-perl/unstable,now 0.96-1 all [installed,automatic] libipc-system-simple-perl/unstable,now 1.25-3 all [installed,automatic] libisl15/unstable,now 0.18-1 amd64 [installed,automatic] libitm1/unstable,now 7.2.0-19 amd64 [installed,automatic] libjs-jquery/unstable,now 3.2.1-1 all [installed,automatic] libk5crypto3/unstable,now 1.16-2 amd64 [installed,automatic] libkeyutils1/unstable,now 1.5.9-9.2 amd64 [installed,automatic] libkrb5-3/unstable,now 1.16-2 amd64 [installed,automatic] libkrb5support0/unstable,now 1.16-2 amd64 [installed,automatic] libksba8/unstable,now 1.3.5-2 amd64 [installed,automatic] libkyotocabinet16v5/unstable,now 1.2.76-4.2+b1 amd64 [installed,automatic] libldap-2.4-2/unstable,now 2.4.45+dfsg-1 amd64 [installed,automatic] libldap-common/unstable,now 2.4.45+dfsg-1 all [installed,automatic] liblist-compare-perl/unstable,now 0.53-1 all [installed,automatic] liblist-moreutils-perl/unstable,now 0.416-1+b3 amd64 [installed,automatic] liblocale-gettext-perl/unstable,now 1.07-3+b3 amd64 [installed,automatic] liblsan0/unstable,now 7.2.0-19 amd64 [installed,automatic] libltdl-dev/unstable,now 2.4.6-2 amd64 [installed,automatic] libltdl7/unstable,now 2.4.6-2 amd64 [installed,automatic] liblwp-mediatypes-perl/unstable,now 6.02-1 all [installed,automatic] liblwp-protocol-https-perl/unstable,now 6.07-2 all [installed,automatic] liblz4-1/unstable,now 0.0~r131-2+b1 amd64 [installed,automatic] liblzma5/unstable,now 5.2.2-1.3 amd64 [installed,automatic] liblzo2-2/unstable,now 2.08-1.2+b2 amd64 [installed,automatic] libmagic-mgc/unstable,now 1:5.32-1 amd64 [installed,automatic] libmagic1/unstable,now 1:5.32-1 amd64 [installed,automatic] libmail-sendmail-perl/unstable,now 0.80-1 all [installed,automatic] libmailtools-perl/unstable,now 2.18-1 all [installed,automatic] libmailutils5/unstable,now 1:3.4-1 amd64 [installed,automatic] libmariadbclient18/unstable,now 1:10.1.29-6 amd64 [installed,automatic] libmime-tools-perl/unstable,now 5.509-1 all [installed,automatic] libmnl0/unstable,now 1.0.4-2 amd64 [installed,automatic] libmodule-implementation-perl/unstable,now 0.09-1 all [installed,automatic] libmodule-runtime-perl/unstable,now 0.016-1 all [installed,automatic] libmoo-perl/unstable,now 2.003004-1 all [installed,automatic] libmount1/unstable,now 2.30.2-0.3 amd64 [installed,automatic] libmpc3/unstable,now 1.0.3-2 amd64 [installed,automatic] libmpdec2/unstable,now 2.4.2-1 amd64 [installed,automatic] libmpfr4/unstable,now 3.1.6-1 amd64 [installed,automatic] libmpx2/unstable,now 7.2.0-19 amd64 [installed,automatic] libnamespace-clean-perl/unstable,now 0.27-1 all [installed,automatic] libncurses5/unstable,now 6.0+20171125-1 amd64 [installed,automatic] libncursesw5/unstable,now 6.0+20171125-1 amd64 [installed,automatic] libnet-dns-perl/unstable,now 1.10-2 all [installed,automatic] libnet-domain-tld-perl/unstable,now 1.75-1 all [installed,automatic] libnet-http-perl/unstable,now 6.17-1 all [installed,automatic] libnet-ip-perl/unstable,now 1.26-1 all [installed,automatic] libnet-smtp-ssl-perl/unstable,now 1.04-1 all [installed,automatic] libnet-ssleay-perl/unstable,now 1.84-1 amd64 [installed,automatic] libnettle6/unstable,now 3.4-1 amd64 [installed,automatic] libnghttp2-14/unstable,now 1.29.0-1 amd64 [installed,automatic] libnpth0/unstable,now 1.5-3 amd64 [installed,automatic] libntlm0/unstable,now 1.4-8 amd64 [installed,automatic] libnumber-compare-perl/unstable,now 0.03-1 all [installed,automatic] libnumber-range-perl/unstable,now 0.12-1 all [installed,automatic] libossp-uuid-perl/unstable,now 1.6.2-1.5+b6 amd64 [installed,automatic] libossp-uuid16/unstable,now 1.6.2-1.5+b6 amd64 [installed,automatic] libp11-kit0/unstable,now 0.23.9-2 amd64 [installed,automatic] libpackage-stash-perl/unstable,now 0.37-1 all [installed,automatic] libpackage-stash-xs-perl/unstable,now 0.28-3+b3 amd64 [installed,automatic] libpam-modules/unstable,now 1.1.8-3.6 amd64 [installed,automatic] libpam-modules-bin/unstable,now 1.1.8-3.6 amd64 [installed,automatic] libpam-runtime/unstable,now 1.1.8-3.6 all [installed,automatic] libpam0g/unstable,now 1.1.8-3.6 amd64 [installed,automatic] libparams-classify-perl/unstable,now 0.015-1 amd64 [installed,automatic] libparams-util-perl/unstable,now 1.07-3+b3 amd64 [installed,automatic] libparams-validate-perl/unstable,now 1.29-1 amd64 [installed,automatic] libparse-debianchangelog-perl/unstable,now 1.2.0-12 all [installed,automatic] libpath-iterator-rule-perl/unstable,now 1.009-1 all [installed,automatic] libpath-tiny-perl/unstable,now 0.104-1 all [installed,automatic] libpcre2-8-0/unstable,now 10.22-5 amd64 [installed,automatic] libpcre3/unstable,now 2:8.39-8 amd64 [installed,automatic] libperl5.26/unstable,now 5.26.1-4 amd64 [installed,automatic] libperlio-gzip-perl/unstable,now 0.19-1+b4 amd64 [installed,automatic] libpipeline1/unstable,now 1.5.0-1 amd64 [installed,automatic] libpng16-16/unstable,now 1.6.34-1 amd64 [installed,automatic] libpod-constants-perl/unstable,now 0.19-1 all [installed,automatic] libpsl5/unstable,now 0.19.1-4 amd64 [installed,automatic] libpython2.7/unstable,now 2.7.14-4 amd64 [installed,automatic] libpython2.7-minimal/unstable,now 2.7.14-4 amd64 [installed,automatic] libpython2.7-stdlib/unstable,now 2.7.14-4 amd64 [installed,automatic] libpython3-stdlib/unstable,now 3.6.4-1 amd64 [installed,automatic] libpython3.6-minimal/unstable,now 3.6.4-3 amd64 [installed,automatic] libpython3.6-stdlib/unstable,now 3.6.4-3 amd64 [installed,automatic] libquadmath0/unstable,now 7.2.0-19 amd64 [installed,automatic] libreadline7/unstable,now 7.0-3 amd64 [installed,automatic] libregexp-assemble-perl/unstable,now 0.36-1 all [installed,automatic] libregexp-pattern-license-perl/unstable,now 3.0.31-3 all [installed,automatic] librole-tiny-perl/unstable,now 2.000006-1 all [installed,automatic] librtmp1/unstable,now 2.4+20151223.gitfa8646d.1-1+b1 amd64 [installed,automatic] libruby/now 1:2.3.3+faux all [installed,local] libruby2.3/unstable,now 2.3.6-2 amd64 [installed,automatic] libruby2.5/unstable,now 2.5.0-4 amd64 [installed,automatic] libsasl2-2/unstable,now 2.1.27~101-g0780600+dfsg-3 amd64 [installed,automatic] libsasl2-modules/unstable,now 2.1.27~101-g0780600+dfsg-3 amd64 [installed,automatic] libsasl2-modules-db/unstable,now 2.1.27~101-g0780600+dfsg-3 amd64 [installed,automatic] libseccomp2/unstable,now 2.3.1-2.1 amd64 [installed,automatic] libselinux1/unstable,now 2.7-2 amd64 [installed,automatic] libsemanage-common/unstable,now 2.7-2 all [installed,automatic] libsemanage1/unstable,now 2.7-2 amd64 [installed,automatic] libsepol1/unstable,now 2.7-1 amd64 [installed,automatic] libsigsegv2/unstable,now 2.11-1 amd64 [installed,automatic] libsmartcols1/unstable,now 2.30.2-0.3 amd64 [installed,automatic] libsoap-lite-perl/unstable,now 1.26-1 all [installed,automatic] libsocket6-perl/unstable,now 0.27-1+b3 amd64 [installed,automatic] libsort-key-perl/unstable,now 1.33-1+b5 amd64 [installed,automatic] libsort-versions-perl/unstable,now 1.62-1 all [installed,automatic] libsqlite3-0/unstable,now 3.22.0-1 amd64 [installed,automatic] libss2/unstable,now 1.43.8-2 amd64 [installed,automatic] libssh2-1/unstable,now 1.8.0-1 amd64 [installed,automatic] libssl1.0.2/unstable,now 1.0.2n-1 amd64 [installed,automatic] libssl1.1/unstable,now 1.1.0g-2 amd64 [installed,automatic] libstdc++-7-dev/unstable,now 7.2.0-19 amd64 [installed,automatic] libstdc++6/unstable,now 7.2.0-19 amd64 [installed,automatic] libstrictures-perl/unstable,now 2.000003-1 all [installed,automatic] libstring-copyright-perl/unstable,now 0.003005-1 all [installed,automatic] libstring-escape-perl/unstable,now 2010.002-1 all [installed,automatic] libsub-exporter-perl/unstable,now 0.987-1 all [installed,automatic] libsub-exporter-progressive-perl/unstable,now 0.001013-1 all [installed,automatic] libsub-identify-perl/unstable,now 0.14-1 amd64 [installed,automatic] libsub-install-perl/unstable,now 0.928-1 all [installed,automatic] libsub-name-perl/unstable,now 0.21-1+b2 amd64 [installed,automatic] libsub-quote-perl/unstable,now 2.004000-1 all [installed,automatic] libsys-hostname-long-perl/unstable,now 1.5-1 all [installed,automatic] libsystemd0/unstable,now 236-3+b1 amd64 [installed,automatic] libtask-weaken-perl/unstable,now 1.05-1 all [installed,automatic] libtasn1-6/unstable,now 4.13-2 amd64 [installed,automatic] libtcl8.6/unstable,now 8.6.8+dfsg-2 amd64 [installed,automatic] libtext-glob-perl/unstable,now 0.10-1 all [installed,automatic] libtext-levenshtein-perl/unstable,now 0.13-1 all [installed,automatic] libtimedate-perl/unstable,now 2.3000-2 all [installed,automatic] libtinfo5/unstable,now 6.0+20171125-1 amd64 [installed,automatic] libtk8.6/unstable,now 8.6.8-2 amd64 [installed,automatic] libtool/unstable,now 2.4.6-2 all [installed,automatic] libtry-tiny-perl/unstable,now 0.30-1 all [installed,automatic] libtsan0/unstable,now 7.2.0-19 amd64 [installed,automatic] libubsan0/unstable,now 7.2.0-19 amd64 [installed,automatic] libudev1/unstable,now 236-3+b1 amd64 [installed,automatic] libunicode-utf8-perl/unstable,now 0.60-1+b4 amd64 [installed,automatic] libunistring2/unstable,now 0.9.8-1 amd64 [installed,automatic] liburi-perl/unstable,now 1.73-1 all [installed,automatic] libuuid1/unstable,now 2.30.2-0.3 amd64 [installed,automatic] libvariable-magic-perl/unstable,now 0.62-1 amd64 [installed,automatic] libwrap0/unstable,now 7.6.q-27 amd64 [installed,automatic] libwww-perl/unstable,now 6.31-1 all [installed,automatic] libwww-robotrules-perl/unstable,now 6.01-1 all [installed,automatic] libx11-6/unstable,now 2:1.6.4-3 amd64 [installed,automatic] libx11-data/unstable,now 2:1.6.4-3 all [installed,automatic] libxau6/unstable,now 1:1.0.8-1+b2 amd64 [installed,automatic] libxcb1/unstable,now 1.12-1 amd64 [installed,automatic] libxdmcp6/unstable,now 1:1.1.2-3 amd64 [installed,automatic] libxext6/unstable,now 2:1.3.3-1+b2 amd64 [installed,automatic] libxft2/unstable,now 2.3.2-1+b2 amd64 [installed,automatic] libxml-libxml-perl/unstable,now 2.0128+dfsg-5 amd64 [installed,automatic] libxml-namespacesupport-perl/unstable,now 1.12-1 all [installed,automatic] libxml-parser-perl/unstable,now 2.44-2+b3 amd64 [installed,automatic] libxml-sax-base-perl/unstable,now 1.09-1 all [installed,automatic] libxml-sax-expat-perl/unstable,now 0.40-2 all [installed,automatic] libxml-sax-perl/unstable,now 0.99+dfsg-2 all [installed,automatic] libxml-simple-perl/unstable,now 2.24-1 all [installed,automatic] libxml2/unstable,now 2.9.4+dfsg1-6.1 amd64 [installed,automatic] libxmlrpc-lite-perl/unstable,now 0.717-1 all [installed,automatic] libxmuu1/unstable,now 2:1.1.2-2 amd64 [installed,automatic] libxrender1/unstable,now 1:0.9.10-1 amd64 [installed,automatic] libxss1/unstable,now 1:1.2.2-1+b2 amd64 [installed,automatic] libyaml-0-2/unstable,now 0.1.7-2 amd64 [installed,automatic] libyaml-libyaml-perl/unstable,now 0.69+repack-1 amd64 [installed,automatic] licensecheck/unstable,now 3.0.31-2 all [installed,automatic] lintian/unstable,now 2.5.71 all [installed,automatic] linux-libc-dev/unstable,now 4.14.13-1 amd64 [installed,automatic] login/unstable,now 1:4.5-1 amd64 [installed,automatic] lsb-base/unstable,now 9.20170808 all [installed,automatic] lsb-release/unstable,now 9.20170808 all [installed,automatic] m4/unstable,now 1.4.18-1 amd64 [installed,automatic] mailutils/unstable,now 1:3.4-1 amd64 [installed,automatic] mailutils-common/unstable,now 1:3.4-1 all [installed,automatic] make/unstable,now 4.1-9.1 amd64 [installed,automatic] man-db/unstable,now 2.7.6.1-4 amd64 [installed,automatic] mawk/unstable,now 1.3.3-17+b3 amd64 [installed,automatic] mime-support/unstable,now 3.60 all [installed,automatic] mount/unstable,now 2.30.2-0.3 amd64 [installed,automatic] multiarch-support/unstable,now 2.26-4 amd64 [installed,auto-removable] mysql-common/unstable,now 5.8+1.0.4 all [installed,automatic] ncurses-base/unstable,now 6.0+20171125-1 all [installed,automatic] ncurses-bin/unstable,now 6.0+20171125-1 amd64 [installed,automatic] netbase/unstable,now 5.4 all [installed,automatic] openssh-client/unstable,now 1:7.6p1-3 amd64 [installed,automatic] openssl/unstable,now 1.1.0g-2 amd64 [installed,automatic] passwd/unstable,now 1:4.5-1 amd64 [installed,automatic] patch/unstable,now 2.7.5-1+b2 amd64 [installed,automatic] patchutils/unstable,now 0.3.4-2 amd64 [installed,automatic] perl/unstable,now 5.26.1-4 amd64 [installed,automatic] perl-base/unstable,now 5.26.1-4 amd64 [installed,automatic] perl-modules-5.26/unstable,now 5.26.1-4 all [installed,automatic] perl-openssl-defaults/unstable,now 3 amd64 [installed,automatic] pinentry-curses/unstable,now 1.0.0-3 amd64 [installed,automatic] po-debconf/unstable,now 1.0.20 all [installed,automatic] psmisc/unstable,now 23.1-1 amd64 [installed,automatic] publicsuffix/unstable,now 20171228.1526-2 all [installed,automatic] python-apt-common/unstable,now 1.4.0~beta3 all [installed,automatic] python3/unstable,now 3.6.4-1 amd64 [installed,automatic] python3-apt/unstable,now 1.4.0~beta3+b1 amd64 [installed,automatic] python3-certifi/unstable,now 2017.11.5-1 all [installed,automatic] python3-chardet/unstable,now 3.0.4-1 all [installed,automatic] python3-debian/unstable,now 0.1.31 all [installed,automatic] python3-distutils/unstable,now 3.6.4-2 all [installed,automatic] python3-gpg/unstable,now 1.10.0-1 amd64 [installed,automatic] python3-idna/unstable,now 2.6-1 all [installed,automatic] python3-lib2to3/unstable,now 3.6.4-2 all [installed,automatic] python3-magic/unstable,now 1:5.32-1 all [installed,automatic] python3-minimal/unstable,now 3.6.4-1 amd64 [installed,automatic] python3-pkg-resources/unstable,now 38.2.4-2 all [installed,automatic] python3-requests/unstable,now 2.18.4-1 all [installed,automatic] python3-six/unstable,now 1.11.0-1 all [installed,automatic] python3-unidiff/unstable,now 0.5.4-1 all [installed,automatic] python3-urllib3/unstable,now 1.22-1 all [installed,automatic] python3-xdg/unstable,now 0.25-4 all [installed,automatic] python3.6/unstable,now 3.6.4-3 amd64 [installed,automatic] python3.6-minimal/unstable,now 3.6.4-3 amd64 [installed,automatic] rake/unstable,now 12.3.0-1 all [installed] readline-common/unstable,now 7.0-3 all [installed,automatic] ri/now 1:2.3.3+faux all [installed,local] ruby/now 1:2.3.3+faux amd64 [installed,local] ruby-all-dev/now 1:2.3.3+faux amd64 [installed,local] ruby-dev/now 1:2.3.3+faux amd64 [installed,local] ruby-did-you-mean/unstable,now 1.0.0-2 all [installed,automatic] ruby-full/now 1:2.3.3+faux all [installed,local] ruby-minitest/unstable,now 5.10.3-1 all [installed,automatic] ruby-net-telnet/unstable,now 0.1.1-2 all [installed,automatic] ruby-power-assert/unstable,now 0.3.0-1 all [installed,automatic] ruby-setup/unstable,now 3.4.1-9 all [installed,automatic] ruby-tcltk/now 1:2.3.3+faux all [installed,local] ruby-test-unit/unstable,now 3.2.5-1 all [installed,automatic] ruby2.3/unstable,now 2.3.6-2 amd64 [installed,automatic] ruby2.3-dev/unstable,now 2.3.6-2 amd64 [installed,automatic] ruby2.3-doc/unstable,now 2.3.6-2 all [installed,automatic] ruby2.3-tcltk/unstable,now 2.3.6-2 amd64 [installed,automatic] ruby2.5/unstable,now 2.5.0-4 amd64 [installed,automatic] ruby2.5-dev/unstable,now 2.5.0-4 amd64 [installed,automatic] ruby2.5-doc/unstable,now 2.5.0-4 all [installed,automatic] rubygems-integration/unstable,now 1.11 all [installed,automatic] sed/unstable,now 4.4-1 amd64 [installed,automatic] sensible-utils/unstable,now 0.0.11 all [installed,automatic] shared-mime-info/unstable,now 1.9-2 amd64 [installed,automatic] strace/unstable,now 4.19-1 amd64 [installed,automatic] sysvinit-utils/unstable,now 2.88dsf-59.10 amd64 [installed,automatic] t1utils/unstable,now 1.41-2 amd64 [installed,automatic] tar/unstable,now 1.29b-2 amd64 [installed,automatic] tzdata/unstable,now 2018b-1 all [installed,automatic] ucf/unstable,now 3.0036 all [installed,automatic] unzip/unstable,now 6.0-21 amd64 [installed,automatic] util-linux/unstable,now 2.30.2-0.3 amd64 [installed,automatic] wdiff/unstable,now 1.2.2-2 amd64 [installed,automatic] x11-common/unstable,now 1:7.7+19 all [installed,automatic] xauth/unstable,now 1:1.0.10-1 amd64 [installed,automatic] xdg-user-dirs/unstable,now 0.16-1 amd64 [installed,automatic] xz-utils/unstable,now 5.2.2-1.3 amd64 [installed,automatic] zip/unstable,now 3.0-11+b1 amd64 [installed,automatic] zlib1g/unstable,now 1:1.2.8.dfsg-5 amd64 [installed,automatic] ####################################################### ## 2018-01-23T19:05:40+00:00 ## Download source ####################################################### Reading package lists... NOTICE: 'ruby-mustermann19' packaging is maintained in the 'Git' version control system at: https://anonscm.debian.org/git/pkg-ruby-extras/ruby-mustermann19.git Please use: git clone https://anonscm.debian.org/git/pkg-ruby-extras/ruby-mustermann19.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 88.1 kB of source archives. Get:1 http://deb.debian.org/debian sid/main ruby-mustermann19 0.4.3+git20160621-1 (dsc) [2253 B] Get:2 http://deb.debian.org/debian sid/main ruby-mustermann19 0.4.3+git20160621-1 (tar) [83.5 kB] Get:3 http://deb.debian.org/debian sid/main ruby-mustermann19 0.4.3+git20160621-1 (diff) [2400 B] dpkg-source: info: extracting ruby-mustermann19 in ruby-mustermann19-0.4.3+git20160621 dpkg-source: info: unpacking ruby-mustermann19_0.4.3+git20160621.orig.tar.gz dpkg-source: info: unpacking ruby-mustermann19_0.4.3+git20160621-1.debian.tar.xz dpkg-source: info: applying 0001-remove-unnecessary-dependency Fetched 88.1 kB in 2s (51.0 kB/s) W: Download is performed unsandboxed as root as file 'ruby-mustermann19_0.4.3+git20160621-1.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied) ####################################################### ## 2018-01-23T19:05:44+00:00 ## Build dependencies ####################################################### Note, using directory '.' to get the build dependencies Reading package lists... Building dependency tree... Reading state information... The following package was automatically installed and is no longer required: multiarch-support Use 'apt autoremove' to remove it. The following NEW packages will be installed: ruby-diff-lcs ruby-rack ruby-rack-protection ruby-rack-test ruby-rspec ruby-rspec-core ruby-rspec-expectations ruby-rspec-its ruby-rspec-mocks ruby-rspec-support ruby-sinatra ruby-thread-order ruby-tilt 0 upgraded, 13 newly installed, 0 to remove and 0 not upgraded. Need to get 902 kB of archives. After this operation, 2871 kB of additional disk space will be used. Get:1 http://deb.debian.org/debian sid/main amd64 ruby-diff-lcs all 1.3-1 [25.7 kB] Get:2 http://deb.debian.org/debian sid/main amd64 ruby-rack all 1.6.4-4 [88.4 kB] Get:3 http://deb.debian.org/debian sid/main amd64 ruby-rack-protection all 1.5.3-2 [10.1 kB] Get:4 http://deb.debian.org/debian sid/main amd64 ruby-rack-test all 0.7.0-1 [15.2 kB] Get:5 http://deb.debian.org/debian sid/main amd64 ruby-rspec-support all 3.5.0c3e0m0s0-1 [28.2 kB] Get:6 http://deb.debian.org/debian sid/main amd64 ruby-rspec-expectations all 3.5.0c3e0m0s0-1 [97.5 kB] Get:7 http://deb.debian.org/debian sid/main amd64 ruby-rspec-mocks all 3.5.0c3e0m0s0-1 [92.4 kB] Get:8 http://deb.debian.org/debian sid/main amd64 ruby-thread-order all 1.1.0-1 [5096 B] Get:9 http://deb.debian.org/debian sid/main amd64 ruby-rspec-core all 3.5.0c3e0m0s0-1 [184 kB] Get:10 http://deb.debian.org/debian sid/main amd64 ruby-rspec all 3.5.0c3e0m0s0-1 [7122 B] Get:11 http://deb.debian.org/debian sid/main amd64 ruby-rspec-its all 1.2.0-2 [6054 B] Get:12 http://deb.debian.org/debian sid/main amd64 ruby-tilt all 2.0.1-2 [23.3 kB] Get:13 http://deb.debian.org/debian sid/main amd64 ruby-sinatra all 1.4.7-5 [320 kB] debconf: unable to initialize frontend: Dialog debconf: (TERM is not set, so the dialog frontend is not usable.) debconf: falling back to frontend: Readline debconf: unable to initialize frontend: Readline debconf: (This frontend requires a controlling tty.) debconf: falling back to frontend: Teletype dpkg-preconfigure: unable to re-open stdin: Fetched 902 kB in 1s (663 kB/s) Selecting previously unselected package ruby-diff-lcs. (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 ... 57695 files and directories currently installed.) Preparing to unpack .../00-ruby-diff-lcs_1.3-1_all.deb ... Unpacking ruby-diff-lcs (1.3-1) ... Selecting previously unselected package ruby-rack. Preparing to unpack .../01-ruby-rack_1.6.4-4_all.deb ... Unpacking ruby-rack (1.6.4-4) ... Selecting previously unselected package ruby-rack-protection. Preparing to unpack .../02-ruby-rack-protection_1.5.3-2_all.deb ... Unpacking ruby-rack-protection (1.5.3-2) ... Selecting previously unselected package ruby-rack-test. Preparing to unpack .../03-ruby-rack-test_0.7.0-1_all.deb ... Unpacking ruby-rack-test (0.7.0-1) ... Selecting previously unselected package ruby-rspec-support. Preparing to unpack .../04-ruby-rspec-support_3.5.0c3e0m0s0-1_all.deb ... Unpacking ruby-rspec-support (3.5.0c3e0m0s0-1) ... Selecting previously unselected package ruby-rspec-expectations. Preparing to unpack .../05-ruby-rspec-expectations_3.5.0c3e0m0s0-1_all.deb ... Unpacking ruby-rspec-expectations (3.5.0c3e0m0s0-1) ... Selecting previously unselected package ruby-rspec-mocks. Preparing to unpack .../06-ruby-rspec-mocks_3.5.0c3e0m0s0-1_all.deb ... Unpacking ruby-rspec-mocks (3.5.0c3e0m0s0-1) ... Selecting previously unselected package ruby-thread-order. Preparing to unpack .../07-ruby-thread-order_1.1.0-1_all.deb ... Unpacking ruby-thread-order (1.1.0-1) ... Selecting previously unselected package ruby-rspec-core. Preparing to unpack .../08-ruby-rspec-core_3.5.0c3e0m0s0-1_all.deb ... Unpacking ruby-rspec-core (3.5.0c3e0m0s0-1) ... Selecting previously unselected package ruby-rspec. Preparing to unpack .../09-ruby-rspec_3.5.0c3e0m0s0-1_all.deb ... Unpacking ruby-rspec (3.5.0c3e0m0s0-1) ... Selecting previously unselected package ruby-rspec-its. Preparing to unpack .../10-ruby-rspec-its_1.2.0-2_all.deb ... Unpacking ruby-rspec-its (1.2.0-2) ... Selecting previously unselected package ruby-tilt. Preparing to unpack .../11-ruby-tilt_2.0.1-2_all.deb ... Unpacking ruby-tilt (2.0.1-2) ... Selecting previously unselected package ruby-sinatra. Preparing to unpack .../12-ruby-sinatra_1.4.7-5_all.deb ... Unpacking ruby-sinatra (1.4.7-5) ... Setting up ruby-rack (1.6.4-4) ... Setting up ruby-rack-protection (1.5.3-2) ... Setting up ruby-rack-test (0.7.0-1) ... Setting up ruby-thread-order (1.1.0-1) ... Setting up ruby-rspec-support (3.5.0c3e0m0s0-1) ... Setting up ruby-tilt (2.0.1-2) ... Processing triggers for man-db (2.7.6.1-4) ... Setting up ruby-diff-lcs (1.3-1) ... Setting up ruby-rspec-expectations (3.5.0c3e0m0s0-1) ... Setting up ruby-rspec-mocks (3.5.0c3e0m0s0-1) ... Setting up ruby-rspec-core (3.5.0c3e0m0s0-1) ... Setting up ruby-sinatra (1.4.7-5) ... Setting up ruby-rspec-its (1.2.0-2) ... Setting up ruby-rspec (3.5.0c3e0m0s0-1) ... ####################################################### ## 2018-01-23T19:06:13+00:00 ## Build ####################################################### dpkg-buildpackage: info: source package ruby-mustermann19 dpkg-buildpackage: info: source version 0.4.3+git20160621-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Lucas Severo dpkg-buildpackage: info: host architecture amd64 dpkg-source --before-build ruby-mustermann19-0.4.3+git20160621 debian/rules clean dh clean --buildsystem=ruby --with ruby dh_auto_clean -O--buildsystem=ruby dh_ruby --clean dh_ruby --clean fatal: Not a git repository (or any of the parent directories): .git fatal: Not a git repository (or any of the parent directories): .git fatal: Not a git repository (or any of the parent directories): .git dh_clean -O--buildsystem=ruby debian/rules build dh build --buildsystem=ruby --with ruby dh_update_autotools_config -O--buildsystem=ruby dh_auto_configure -O--buildsystem=ruby dh_ruby --configure dh_auto_build -O--buildsystem=ruby dh_ruby --build dh_ruby --build dh_auto_test -O--buildsystem=ruby dh_ruby --test debian/rules binary dh binary --buildsystem=ruby --with ruby dh_testroot -O--buildsystem=ruby dh_prep -O--buildsystem=ruby dh_auto_install -O--buildsystem=ruby dh_ruby --install /build/ruby-mustermann19-0.4.3\+git20160621/debian/ruby-mustermann19 dh_ruby --install fatal: Not a git repository (or any of the parent directories): .git fatal: Not a git repository (or any of the parent directories): .git fatal: Not a git repository (or any of the parent directories): .git ┌──────────────────────────────────────────────────────────────────────────────┐ │ Install files │ └──────────────────────────────────────────────────────────────────────────────┘ install -d /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/router.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/router.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/flask.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/flask.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/grape.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/grape.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/regexp.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/equality_map.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/equality_map.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/transformer.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/ast/transformer.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/node.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/ast/node.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/tree_renderer.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/ast/tree_renderer.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/translator.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/ast/translator.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/param_scanner.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/ast/param_scanner.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/template_generator.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/ast/template_generator.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/parser.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/ast/parser.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/pattern.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/ast/pattern.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/expander.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/ast/expander.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/ast/compiler.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/boundaries.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/ast/boundaries.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/validation.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/ast/validation.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/uri_template.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/uri_template.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/simple_match.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/simple_match.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/pattern_cache.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/pattern_cache.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/composite.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/composite.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/express.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/express.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/pattern.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/pattern.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/version.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/version.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/expander.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/expander.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/error.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/error.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/rails/versions.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/rails/versions.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/to_pattern.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/to_pattern.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/rails.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/rails.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/shell.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/shell.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/extension.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/extension.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/identity.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/identity.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regular.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/regular.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/simple.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/simple.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/mapper.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/mapper.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/pyramid.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/pyramid.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/router/rack.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/router/rack.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/router/simple.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/router/simple.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/template.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/template.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/sinatra.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/sinatra.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/string_scanner.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/string_scanner.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/regexp_based.rb install -D -m644 /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/caster.rb /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby/mustermann/caster.rb ┌──────────────────────────────────────────────────────────────────────────────┐ │ Install Rubygems integration metadata │ └──────────────────────────────────────────────────────────────────────────────┘ generating gemspec at /build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/share/rubygems-integration/all/specifications/mustermann19-0.4.3.gemspec /usr/bin/ruby2.3 /usr/bin/gem2deb-test-runner ┌──────────────────────────────────────────────────────────────────────────────┐ │ Checking Rubygems dependency resolution on ruby2.3 │ └──────────────────────────────────────────────────────────────────────────────┘ fatal: Not a git repository (or any of the parent directories): .git fatal: Not a git repository (or any of the parent directories): .git fatal: Not a git repository (or any of the parent directories): .git GEM_PATH=debian/ruby-mustermann19/usr/share/rubygems-integration/all:/root/.gem/ruby/2.3.0:/var/lib/gems/2.3.0:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.3.0:/usr/share/rubygems-integration/2.3.0:/usr/share/rubygems-integration/all ruby2.3 -e gem\ \"mustermann19\" ┌──────────────────────────────────────────────────────────────────────────────┐ │ Run tests for ruby2.3 from debian/ruby-tests.rake │ └──────────────────────────────────────────────────────────────────────────────┘ RUBYLIB=/build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby:. GEM_PATH=debian/ruby-mustermann19/usr/share/rubygems-integration/all:/root/.gem/ruby/2.3.0:/var/lib/gems/2.3.0:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.3.0:/usr/share/rubygems-integration/2.3.0:/usr/share/rubygems-integration/all ruby2.3 -S rake -f debian/ruby-tests.rake /usr/bin/ruby2.3 /usr/bin/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?': /\/(?:(?:(?:\(|%28))?)?/ /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?': /\A((?-mix:\/(?:(?:(?:\(|%28))?)?))/ /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?': /\A(?-mix:\/(?:(?:(?:\(|%28))?)?)\Z/ /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?': /\/(?:(?:(?:\(|%28)(?:\)|%29))?)?/ /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?': /\A((?-mix:\/(?:(?:(?:\(|%28)(?:\)|%29))?)?))/ /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?': /\A(?-mix:\/(?:(?:(?:\(|%28)(?:\)|%29))?)?)\Z/ /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' Run options: exclude {:skip=>true} Mustermann::AST type  should be == char  should be == char min_size  should be == 1  should be == 0 Mustermann::Composite new  with no argument  with one argument | ==  should be == (sinatra:"/foo/:name" | sinatra:"/:first/:second")  should be == (sinatra:"/foo/:name" | sinatra:"/:first/:second")  should not be == /foo/:name  should not be == (sinatra:"/foo/:name" & sinatra:"/:first/:second") ===  should be === /foo/bar  should be === /fox/bar  should not be === /foo params  should be == {"name"=>"bar"}  should be == {"first"=>"fox", "second"=>"bar"}  should be nil ===  should match "/foo/bar"  should match "/fox/bar"  should not match "/foo" expand  should respond to #expand  should be == /foo/bar  should be == /fox/bar without expandable patterns  should not respond to #expand  should raise NotImplementedError to_templates  should respond to #to_templates  should generate templates "/foo/{name}" and "/{first}/{second}" without patterns implementing to_templates  should not respond to #to_templates  should raise NotImplementedError & ==  should be == (sinatra:"/foo/:name" & sinatra:"/:first/:second")  should be == (sinatra:"/foo/:name" & sinatra:"/:first/:second")  should not be == /foo/:name  should not be == (sinatra:"/foo/:name" | sinatra:"/:first/:second") ===  should be === /foo/bar  should not be === /fox/bar  should not be === /foo params  should be == {"name"=>"bar"}  should be nil  should be nil match  should match "/foo/bar"  should not match "/fox/bar"  should not match "/foo" expand  should not respond to #expand  should raise NotImplementedError ^ ==  should be == (sinatra:"/foo/:name" ^ sinatra:"/:first/:second")  should not be == (sinatra:"/foo/:name" | sinatra:"/:first/:second")  should not be == /foo/:name  should not be == (sinatra:"/foo/:name" & sinatra:"/:first/:second") ===  should not be === /foo/bar  should be === /fox/bar  should not be === /foo params  should be nil  should be == {"first"=>"fox", "second"=>"bar"}  should be nil match  should not match "/foo/bar"  should match "/fox/bar"  should not match "/foo" expand  should not respond to #expand  should raise NotImplementedError inspect  should include "(sinatra:\"x\" | rails:\"x\")"  should include "(sinatra:\"x\" ^ rails:\"x\")"  should include "(sinatra:\"x\" | rails:\"x\" | identity:\"x\")"  should include "(sinatra:\"x\" | (rails:\"x\" & identity:\"x\"))" Mustermann::Expander  expands a pattern  expands multiple patterns  supports setting pattern options  supports combining different pattern styles  ignores nil values  supports splat  supports multiple splats  supports identity patterns additional_values illegal value  should raise ArgumentError  should raise ArgumentError raise  should be == /a  should raise Mustermann::ExpandError  should raise Mustermann::ExpandError ignore  should be == /a  should be == /a  should raise Mustermann::ExpandError append  should be == /a  should be == /a?b=b  should raise Mustermann::ExpandError cast  should be == /FOOBAR  should be == /FOO  should be == /FOO/BAR  should be == /FOO/bar  should be == /FOO/BAR  should be == /foo/b 42  should be == /FOO/bar ==  should be == #  should not be == #  should be == #  should not be == # hash  should be == -4873794795875155868  should not be == 733704432257151118  should be == -2486098038785203806  should not be == -4873794795875155868 eql?  should be eql #], @api_expander=#<...={[]=>[[], "/foo", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>  should not be eql #], @api_expander=#<...={[]=>[[], "/bar", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>  should be eql #], @api_expander=#[[], "/foo", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>  should not be eql #], @api_expander=#<...={[]=>[[], "/foo", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]> equal?  should not be equal #], @api_expander=#<...={[]=>[[], "/foo", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>  should not be equal #], @api_expander=#<...={[]=>[[], "/bar", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>  should not be equal #], @api_expander=#[[], "/foo", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>  should not be equal #], @api_expander=#<...={[]=>[[], "/foo", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]> Mustermann::Express pattern ""  string should be immune to external change  should match ""  should not match "/"  should expand  should not expand [:a, 1]  should generate template ""  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo"  should expand  should not expand [:a, 1] to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar"  should expand  should not expand [:a, 1] to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should expand  should not expand [:a, 1] to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/:foo"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be nil  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should not expand  should generate template "/{foo}" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo+"  string should be immune to external change  should not match "/"  should match "/foo"  should match "/foo/bar"  should expand  should expand [:foo, nil]  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should generate template "/{+foo}" to_s  should be == /:foo+ inspect  should be == # names  should be a kind of Array pattern "/:foo?"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should match "/"  should not match "/foo?"  should not match "/foo/bar"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be == {"foo"=>nil}  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should expand  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should generate template "/{foo}"  should generate template "/" to_s  should be == /:foo? inspect  should be == # names  should be a kind of Array pattern "/:foo*"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should expand  should expand [:foo, nil]  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should generate template "/{+foo}" to_s  should be == /:foo* inspect  should be == # names  should be a kind of Array pattern "/:foo(.*)"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should generate template "/{foo}" to_s  should be == /:foo(.*) inspect  should be == # names  should be a kind of Array pattern "/:foo(\\d+)"  string should be immune to external change  should not match "/"  should not match "/foo"  should match "/15"  should generate template "/{foo}" to_s  should be == /:foo(\d+) inspect  should be == # names  should be a kind of Array pattern "/:foo(\\d+|bar)"  string should be immune to external change  should not match "/"  should not match "/foo"  should match "/15"  should match "/bar"  should generate template "/{foo}" to_s  should be == /:foo(\d+|bar) inspect  should be == # names  should be a kind of Array pattern "/:foo(\\))"  string should be immune to external change  should not match "/"  should not match "/foo"  should match "/)"  should generate template "/{foo}" to_s  should be == /:foo(\)) inspect  should be == # names  should be a kind of Array pattern "/:foo(prefix(\\d+|bar))"  string should be immune to external change  should not match "/prefix"  should not match "/prefixfoo"  should match "/prefix15"  should match "/prefixbar"  should generate template "/{foo}" to_s  should be == /:foo(prefix(\d+|bar)) inspect  should be == # names  should be a kind of Array pattern "/(.+)"  string should be immune to external change  should not match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+splat}" to_s  should be == /(.+) inspect  should be == # names  should be a kind of Array pattern "/(foo(a|b))"  string should be immune to external change  should not match "/"  should match "/fooa"  should match "/foob"  should generate template "/{+splat}" to_s  should be == /(foo(a|b)) inspect  should be == # names  should be a kind of Array invalid syntax  unexpected closing parenthesis  missing closing parenthesis  unexpected ?  unexpected * Mustermann::Extension  sets up the extension uses Sinatra-style patterns by default  should be == foo  should be == foo.  should be == foo  should be == a b except  should be ok  should not be ok capture global  should be == foo.bar  should be == foo route local  should be ok  should not be ok global and route local global is a hash  should be == a  should be == a  should be == b  should be == c global is not a hash  should be ok  should not be ok  should be ok  should be == 20  should be == 42  should be == ok pattern except  should be ok  should not be ok capture route local  should be ok  should not be ok global and route local global is a hash  should be == a  should be == a  should be == b  should be == c global is not a hash  should be ok  should not be ok  should be ok  should be == 20  should be == 42  should be == ok greedy default  should be == foo  should be == foo.bar enabled  should be == foo  should be == foo.bar disabled  should be == foo  should be == foo global  should be == foo  should be == foo space_matches_plus default  should be ok  should be ok enabled  should be ok  should be ok disabled  should be ok  should not be ok global  should be ok  should not be ok uri_decode default  should be ok  should be ok enabled  should be ok  should be ok disabled  should be ok  should not be ok global  should be ok  should not be ok type identity  should be ok  should not be ok rails  should be == foo  should be == foo.  should be == foo  should be == a b simple  should be ok  should not be ok simple  should be ok  should not be ok  should be == ["a"] "png"  should be == ["a", "b"] "png" works with filters  should be == auth required  should be == please log in Mustermann::Flask pattern ""  string should be immune to external change  should match ""  should not match "/"  should expand  should not expand [:a, 1]  should generate template ""  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo"  should expand  should not expand [:a, 1] to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar"  should expand  should not expand [:a, 1] to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should expand  should not expand [:a, 1] to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be nil  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should not expand  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be nil  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should not expand  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/f"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/f"  should match "/fo"  should match "/foo"  should match "/bar"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/42"  should not match "/1.0"  should not match "/.5"  should not match "/foo"  should not match "/bar"  should not match "/foo.bar"  should not match "/%0Afoo"  should not match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>42}  should expand [:foo, 12]  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/42"  should not match "/1.0"  should not match "/.5"  should not match "/foo"  should not match "/bar"  should not match "/foo.bar"  should not match "/%0Afoo"  should not match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>42}  should expand [:foo, 12]  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo,bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo,bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo,bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should be == {"foo"=>42}  should be == {"foo"=>50}  should be == {"foo"=>5} to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should be == {"foo"=>42.5}  should be == {"foo"=>50.5}  should be == {"foo"=>5.0} to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "///"  string should be immune to external change  should match "/foo/42/42"  should match "/foo/1.0/1"  should match "/foo/.5/0"  should not match "/foo/1/1.0"  should not match "/foo/1.0/1.0"  should generate template "/{prefix}/{foo}/{bar}"  should be == {"prefix"=>"foo", "foo"=>1.0, "bar"=>1} to_s  should be == /// inspect  should be == #//"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should expand  should expand [:foo, nil]  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should generate template "/{+foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/" with options {:converters=>{:foo=>#>}}  string should be immune to external change  should match "/foo"  should be == {"bar"=>"FOO"} to_s  should be == / inspect  should be == #"> names  should be a kind of Array invalid syntax  unexpected end of capture  missing end of capture  unknown converter  broken argument synax  missing )  missing "" FlaskSubclass pattern ""  string should be immune to external change  should match ""  should not match "/"  should expand  should not expand [:a, 1]  should generate template ""  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo"  should expand  should not expand [:a, 1] to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar"  should expand  should not expand [:a, 1] to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should expand  should not expand [:a, 1] to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be nil  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should not expand  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be nil  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should not expand  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/f"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/f"  should match "/fo"  should match "/foo"  should match "/bar"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/42"  should not match "/1.0"  should not match "/.5"  should not match "/foo"  should not match "/bar"  should not match "/foo.bar"  should not match "/%0Afoo"  should not match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>42}  should expand [:foo, 12]  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/42"  should not match "/1.0"  should not match "/.5"  should not match "/foo"  should not match "/bar"  should not match "/foo.bar"  should not match "/%0Afoo"  should not match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>42}  should expand [:foo, 12]  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo,bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo,bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo,bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should be == {"foo"=>42}  should be == {"foo"=>50}  should be == {"foo"=>5} to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should be == {"foo"=>42.5}  should be == {"foo"=>50.5}  should be == {"foo"=>5.0} to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "///"  string should be immune to external change  should match "/foo/42/42"  should match "/foo/1.0/1"  should match "/foo/.5/0"  should not match "/foo/1/1.0"  should not match "/foo/1.0/1.0"  should generate template "/{prefix}/{foo}/{bar}"  should be == {"prefix"=>"foo", "foo"=>1.0, "bar"=>1} to_s  should be == /// inspect  should be == #//"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should expand  should expand [:foo, nil]  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should generate template "/{+foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should generate template "/{bar}"  should raise Mustermann::ParseError with "unexpected converter \"foo\" while parsing \"/\"" to_s  should be == / inspect  should be == #"> names  should be a kind of Array invalid syntax  unexpected end of capture  missing end of capture  unknown converter  broken argument synax  missing )  missing "" Mustermann::Grape pattern ""  string should be immune to external change  should match ""  should not match "/"  should generate template ""  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo" to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar" to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/foo\\/bar"  string should be immune to external change  should match "/foo/bar"  should match "/foo%2Fbar"  should match "/foo%2fbar" to_s  should be == /foo\/bar inspect  should be == # names  should be a kind of Array pattern "/:foo"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/f\u00F6\u00F6"  string should be immune to external change  should match "/f%C3%B6%C3%B6" to_s  should be == /föö inspect  should be == # names  should be a kind of Array pattern "/:foo/:bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo.bar/bar.foo"  should not match "/user@example.com/name"  should not match "/10.1/te.st"  should not match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should be == {"foo"=>"bar", "bar"=>"foo"}  should be nil  should generate template "/{foo}/{bar}" to_s  should be == /:foo/:bar inspect  should be == # names  should be a kind of Array pattern "/{foo}/{bar}"  string should be immune to external change  should match "/foo/bar"  should match "/foo.bar/bar.foo"  should match "/user@example.com/name"  should match "/10.1/te.st"  should match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should be == {"foo"=>"bar", "bar"=>"foo"}  should be nil  should generate template "/{foo}/{bar}" to_s  should be == /{foo}/{bar} inspect  should be == # names  should be a kind of Array pattern "/hello/:person"  string should be immune to external change  should match "/hello/Frank"  should generate template "/hello/{person}" to_s  should be == /hello/:person inspect  should be == # names  should be a kind of Array pattern "/hello/{person}"  string should be immune to external change  should match "/hello/Frank"  should generate template "/hello/{person}" to_s  should be == /hello/{person} inspect  should be == # names  should be a kind of Array pattern "/?:foo?/?:bar?"  string should be immune to external change  should match "/hello/world"  should match "/hello"  should match "/"  should match ""  should expand [:foo, "hello"]  should expand [:foo, "hello"] and [:bar, "world"]  should expand [:bar, "world"]  should expand  should not expand [:baz, ""]  should not match "/hello/world/"  should generate templates "", "/", "//", "//{bar}", "/{bar}", "/{foo}", "/{foo}/", "/{foo}/{bar}", "/{foo}{bar}", "{bar}", "{foo}", "{foo}/", "{foo}/{bar}", and "{foo}{bar}" to_s  should be == /?:foo?/?:bar? inspect  should be == # names  should be a kind of Array pattern "/:foo_bar"  string should be immune to external change  should match "/hello"  should generate template "/{foo_bar}" to_s  should be == /:foo bar inspect  should be == # names  should be a kind of Array pattern "/{foo.bar}"  string should be immune to external change  should match "/hello"  should generate template "/{foo.bar}" to_s  should be == /{foo.bar} inspect  should be == # names  should be a kind of Array pattern "/*"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+splat}"  should be == {"splat"=>["foo"]} to_s  should be == /* inspect  should be == # names  should be a kind of Array pattern "/{+splat}"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+splat}"  should be == {"splat"=>["foo"]} to_s  should be == /{+splat} inspect  should be == # names  should be a kind of Array pattern "/*foo"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+foo}"  should be == {"foo"=>"foo"}  should be == {"foo"=>"foo/bar"} to_s  should be == /*foo inspect  should be == # names  should be a kind of Array pattern "/{+foo}"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+foo}"  should be == {"foo"=>"foo"}  should be == {"foo"=>"foo/bar"} to_s  should be == /{+foo} inspect  should be == # names  should be a kind of Array pattern "/*foo/*bar"  string should be immune to external change  should match "/foo/bar"  should generate template "/{+foo}/{+bar}" to_s  should be == /*foo/*bar inspect  should be == # names  should be a kind of Array pattern "/{+foo}/{+bar}"  string should be immune to external change  should match "/foo/bar"  should generate template "/{+foo}/{+bar}" to_s  should be == /{+foo}/{+bar} inspect  should be == # names  should be a kind of Array pattern "/:foo/*"  string should be immune to external change  should match "/foo/bar/baz"  should match "/foo/"  should match "/h%20w/h%20a%20y"  should not match "/foo"  should generate template "/{foo}/{+splat}"  should be == {"splat"=>["foo"], "foo"=>"bar"}  should be == {"splat"=>["foo/f o"], "foo"=>"bar"} to_s  should be == /:foo/* inspect  should be == # names  should be a kind of Array pattern "/{foo}/*"  string should be immune to external change  should match "/foo/bar/baz"  should match "/foo/"  should match "/h%20w/h%20a%20y"  should not match "/foo"  should generate template "/{foo}/{+splat}"  should be == {"splat"=>["foo"], "foo"=>"bar"}  should be == {"splat"=>["foo/f o"], "foo"=>"bar"} to_s  should be == /{foo}/* inspect  should be == # names  should be a kind of Array pattern "/test$/"  string should be immune to external change  should match "/test$/" to_s  should be == /test$/ inspect  should be == # names  should be a kind of Array pattern "/te+st/"  string should be immune to external change  should match "/te+st/"  should not match "/test/"  should not match "/teest/" to_s  should be == /te+st/ inspect  should be == # names  should be a kind of Array pattern "/path with spaces"  string should be immune to external change  should match "/path%20with%20spaces"  should match "/path%2Bwith%2Bspaces"  should match "/path+with+spaces"  should generate template "/path%20with%20spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/foo&bar"  string should be immune to external change  should match "/foo&bar" to_s  should be == /foo&bar inspect  should be == # names  should be a kind of Array pattern "/foo\\{bar"  string should be immune to external change  should match "/foo%7Bbar" to_s  should be == /foo\{bar inspect  should be == # names  should be a kind of Array pattern "/*/:foo/*/*"  string should be immune to external change  should match "/bar/foo/bling/baz/boom"  should capture all splat parts  should map to proper params to_s  should be == /*/:foo/*/* inspect  should be == # names  should be a kind of Array pattern "/{+splat}/{foo}/{+splat}/{+splat}"  string should be immune to external change  should match "/bar/foo/bling/baz/boom"  should capture all splat parts  should map to proper params to_s  should be == /{+splat}/{foo}/{+splat}/{+splat} inspect  should be == # names  should be a kind of Array pattern "/test.bar"  string should be immune to external change  should match "/test.bar"  should not match "/test0bar" to_s  should be == /test.bar inspect  should be == # names  should be a kind of Array pattern "/:file.:ext"  string should be immune to external change  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony%E6%AD%A3%2Ejpg"  should match "/pony%e6%ad%a3%2ejpg"  should match "/pony\u6B63%2Ejpg"  should match "/pony\u6B63%2ejpg"  should not match "/pony\u6B63..jpg"  should not match "/.jpg" to_s  should be == /:file.:ext inspect  should be == # names  should be a kind of Array pattern "/(:a)x?"  string should be immune to external change  should match "/a"  should match "/xa"  should match "/axa"  should generate template "/{a}x"  should generate template "/{a}" to_s  should be == /(:a)x? inspect  should be == # names  should be a kind of Array pattern "/:user(@:host)?"  string should be immune to external change /usr/lib/ruby/2.3.0/forwardable.rb:204: warning: regular expression has redundant nested repeat operator '?'  should match "/foo@bar"  should not match "/foo.foo@bar"  should not match "/foo@bar.bar"  should generate template "/{user}"  should generate template "/{user}@{host}" to_s  should be == /:user(@:host)? inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)?"  string should be immune to external change /usr/lib/ruby/2.3.0/forwardable.rb:204: warning: regular expression has redundant nested repeat operator '?'  should match "/pony"  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should not match "/pony.png.jpg"  should not match "/pony."  should not match "/.jpg"  should generate template "/{file}"  should generate template "/{file}.{ext}"  should not generate template "/{file}." to_s  should be == /:file(.:ext)? inspect  should be == # names  should be a kind of Array pattern "/:id/test.bar"  string should be immune to external change  should match "/3/test.bar"  should match "/2/test.bar"  should match "/2E/test.bar"  should match "/2e/test.bar"  should match "/%2E/test.bar" to_s  should be == /:id/test.bar inspect  should be == # names  should be a kind of Array pattern "/10/:id"  string should be immune to external change  should match "/10/test"  should not match "/10/te.st" to_s  should be == /10/:id inspect  should be == # names  should be a kind of Array pattern "/10.1/:id"  string should be immune to external change  should match "/10.1/test"  should not match "/10.1/te.st" to_s  should be == /10.1/:id inspect  should be == # names  should be a kind of Array pattern "/:foo.:bar/:id"  string should be immune to external change  should not match "/10.1/te.st"  should not match "/10.1.2/te.st" to_s  should be == /:foo.:bar/:id inspect  should be == # names  should be a kind of Array pattern "/:a/:b.?:c?"  string should be immune to external change  should match "/a/b"  should match "/a/b.c"  should not match "/a.b/c"  should not match "/a.b/c.d"  should not match "/a.b/c.d/e" to_s  should be == /:a/:b.?:c? inspect  should be == # names  should be a kind of Array pattern "/:a(foo:b)?"  string should be immune to external change /usr/lib/ruby/2.3.0/forwardable.rb:204: warning: regular expression has redundant nested repeat operator '?'  should match "/barfoobar"  should match "/barfoobarfoobar"  should match "/bar"  should not match "/" to_s  should be == /:a(foo:b)? inspect  should be == # names  should be a kind of Array pattern "/foo?"  string should be immune to external change  should match "/fo"  should match "/foo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo" to_s  should be == /foo? inspect  should be == # names  should be a kind of Array pattern "/foo\\?"  string should be immune to external change  should match "/foo?"  should not match "/foo\\?"  should not match "/fo"  should not match "/foo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo" to_s  should be == /foo\? inspect  should be == # names  should be a kind of Array pattern "/foo\\\\?"  string should be immune to external change  should match "/foo%5c"  should match "/foo"  should not match "/foo\\?"  should not match "/fo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo" to_s  should be == /foo\\? inspect  should be == # names  should be a kind of Array pattern "/\\("  string should be immune to external change  should match "/(" to_s  should be == /\( inspect  should be == # names  should be a kind of Array pattern "/\\(?"  string should be immune to external change  should match "/("  should match "/" to_s  should be == /\(? inspect  should be == # names  should be a kind of Array pattern "/(\\()?"  string should be immune to external change /usr/lib/ruby/2.3.0/forwardable.rb:204: warning: regular expression has redundant nested repeat operator '?': /\A(?-mix:\/(?:(?:(?:\(|%28))?)?)\Z/  should match "/("  should match "/" to_s  should be == /(\()? inspect  should be == # names  should be a kind of Array pattern "/(\\(\\))?"  string should be immune to external change /usr/lib/ruby/2.3.0/forwardable.rb:204: warning: regular expression has redundant nested repeat operator '?': /\A(?-mix:\/(?:(?:(?:\(|%28)(?:\)|%29))?)?)\Z/  should match "/"  should match "/()"  should not match "/(" to_s  should be == /(\(\))? inspect  should be == # names  should be a kind of Array pattern "/\\(\\)?"  string should be immune to external change  should match "/("  should match "/()"  should not match "/" to_s  should be == /\(\)? inspect  should be == # names  should be a kind of Array pattern "/\\*"  string should be immune to external change  should match "/*"  should not match "/a" to_s  should be == /\* inspect  should be == # names  should be a kind of Array pattern "/\\*/*"  string should be immune to external change  should match "/*/b/c"  should not match "/a/b/c" to_s  should be == /\*/* inspect  should be == # names  should be a kind of Array pattern "/\\:foo"  string should be immune to external change  should match "/:foo"  should not match "/foo" to_s  should be == /\:foo inspect  should be == # names  should be a kind of Array pattern "/:fOO"  string should be immune to external change  should match "/a" to_s  should be == /:fOO inspect  should be == # names  should be a kind of Array pattern "/:_X"  string should be immune to external change  should match "/a" to_s  should be == /: X inspect  should be == # names  should be a kind of Array pattern "/:f00"  string should be immune to external change  should match "/a" to_s  should be == /:f00 inspect  should be == # names  should be a kind of Array pattern "/:foo(/:bar)?/:baz?"  string should be immune to external change /usr/lib/ruby/2.3.0/forwardable.rb:204: warning: regular expression has redundant nested repeat operator '?'  should match "/foo/bar/baz" to_s  should be == /:foo(/:bar)?/:baz? inspect  should be == # names  should be a kind of Array pattern "/(foo|bar)"  string should be immune to external change  should match "/foo"  should match "/bar" to_s  should be == /(foo|bar) inspect  should be == # names  should be a kind of Array pattern "/(foo\\|bar)"  string should be immune to external change  should match "/foo%7Cbar"  should generate template "/foo%7Cbar"  should not match "/foo"  should not match "/bar"  should not generate template "/foo"  should not generate template "/bar" to_s  should be == /(foo\|bar) inspect  should be == # names  should be a kind of Array pattern "/(:a/:b|:c)"  string should be immune to external change  should match "/foo"  should match "/foo/bar"  should expand [:a, "foo"] and [:b, "bar"]  should expand [:c, "foo"]  should not expand [:a, "foo"], [:b, "bar"], and [:c, "baz"] to_s  should be == /(:a/:b|:c) inspect  should be == # names  should be a kind of Array pattern "/:a/:b|:c"  string should be immune to external change  should match "foo"  should match "/foo/bar"  should generate template "/{a}/{b}"  should generate template "{c}"  should expand [:a, "foo"] and [:b, "bar"]  should expand [:c, "foo"]  should not expand [:a, "foo"], [:b, "bar"], and [:c, "baz"] to_s  should be == /:a/:b|:c inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>/\d+/}  string should be immune to external change  should match "/1"  should match "/123"  should not match "/"  should not match "/foo" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>/\d+/}  string should be immune to external change  should match "/1"  should match "/123"  should not match "/"  should not match "/foo" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>"1"}  string should be immune to external change  should match "/1"  should not match "/"  should not match "/foo"  should not match "/123" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>"a.b"}  string should be immune to external change  should match "/a.b"  should match "/a%2Eb"  should match "/a%2eb"  should not match "/ab"  should not match "/afb"  should not match "/a1b"  should not match "/a.bc" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo(/:bar)?" with options {:capture=>:alpha}  string should be immune to external change /usr/lib/ruby/2.3.0/forwardable.rb:204: warning: regular expression has redundant nested repeat operator '?'  should match "/abc"  should match "/a/b"  should match "/a"  should not match "/1/2"  should not match "/a/2"  should not match "/1/b"  should not match "/1"  should not match "/1/"  should not match "/a/"  should not match "//a" to_s  should be == /:foo(/:bar)? inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>["foo", "bar", /\d+/]}  string should be immune to external change  should match "/1"  should match "/123"  should match "/foo"  should match "/bar"  should not match "/"  should not match "/baz"  should not match "/foo1" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo:bar:baz" with options {:capture=>{:foo=>:alpha, :bar=>/\d+/}}  string should be immune to external change  should match "/ab123xy-1"  should match "/ab123"  should not match "/123abcxy-1"  should not match "/abcxy-1"  should not match "/abc1" to_s  should be == /:foo:bar:baz inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>{:foo=>["foo", "bar", /\d+/]}}  string should be immune to external change  should match "/1"  should match "/123"  should match "/foo"  should match "/bar"  should not match "/"  should not match "/baz"  should not match "/foo1" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)?" with options {:capture=>{:ext=>["jpg", "png"]}}  string should be immune to external change /usr/lib/ruby/2.3.0/forwardable.rb:204: warning: regular expression has redundant nested repeat operator '?'  should match "/pony"  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony.png"  should match "/pony%2Epng"  should match "/pony%2epng"  should not match "/pony.png.jpg"  should not match "/pony.jpg.png"  should not match "/pony.gif"  should not match "/pony."  should not match ".jpg" to_s  should be == /:file(.:ext)? inspect  should be == # names  should be a kind of Array pattern "/:file:ext?" with options {:capture=>{:ext=>[".jpg", ".png", ".tar.gz"]}}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony.png"  should match "/pony.tar.gz"  should not match "/pony.png.jpg"  should not match "/pony.jpg.png"  should not match "/pony.gif"  should not match "/pony."  should not match "/.jpg" to_s  should be == /:file:ext? inspect  should be == # names  should be a kind of Array pattern "/:a(@:b)?" with options {:capture=>{:b=>/\d+/}}  string should be immune to external change /usr/lib/ruby/2.3.0/forwardable.rb:204: warning: regular expression has redundant nested repeat operator '?'  should match "/a"  should match "/a@1"  should match "/a@b"  should match "/a@1@2" to_s  should be == /:a(@:b)? inspect  should be == # names  should be a kind of Array pattern "/(:a)b?" with options {:greedy=>false}  string should be immune to external change  should match "/ab" to_s  should be == /(:a)b? inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)?" with options {:greedy=>false}  string should be immune to external change /usr/lib/ruby/2.3.0/forwardable.rb:204: warning: regular expression has redundant nested repeat operator '?'  should match "/pony"  should match "/pony.jpg"  should not match "/pony.png.jpg" to_s  should be == /:file(.:ext)? inspect  should be == # names  should be a kind of Array pattern "/auth/*" with options {:except=>"/auth/login"}  string should be immune to external change  should match "/auth/admin"  should match "/auth/foobar"  should not match "/auth/login" to_s  should be == /auth/* inspect  should be == # names  should be a kind of Array pattern "/:foo/:bar" with options {:except=>"/:bar/20"}  string should be immune to external change  should match "/foo/bar"  should not match "/20/20" to_s  should be == /:foo/:bar inspect  should be == # names  should be a kind of Array pattern "/foo?" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo"  should match "/fo"  should not match "/foo?" to_s  should be == /foo? inspect  should be == # names  should be a kind of Array pattern "/foo/bar" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:uri_decode=>false}  string should be immune to external change  should match "/path with spaces"  should not match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:space_matches_plus=>false}  string should be immune to external change  should match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array invalid syntax  unexpected closing parenthesis  missing closing parenthesis  missing unescaped closing parenthesis  ? at beginning of route  double ?  dangling escape invalid capture names  empty name  named splat  named captures  with capital letter  with integer  same name twice Regexp compatibility ===  non-matching  matching =~  non-matching  matching String#=~  non-matching  matching to_regexp  empty pattern Regexp.try_convert  empty pattern Proc compatibility to_proc  should be a kind of Proc  non-matching  matching peeking peek_size  should be == 7  should be == 9  should be nil peek_match  should be == foo bar  should be == foo%20bar  should be nil peek_params  should be == [{"name"=>"foo bar"}, 7]  should be == [{"name"=>"foo bar"}, 9]  should be nil Mustermann::Identity pattern ""  string should be immune to external change  should match ""  should not match "/"  should respond to #expand  should respond to #to_templates  should generate template ""  should expand  should expand :ignore and {:a=>10}  should expand :append and {:a=>10}  should not expand :raise and {:a=>10}  should not expand [:a, 10]  should be == # to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo"  should be == {}  should be nil  should generate template "/"  should expand to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar" to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should match "/foo%2Fbar"  should match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/:foo"  string should be immune to external change  should match "/:foo"  should match "/%3Afoo"  should not match "/foo"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/:foo"  should expand to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/f\u00F6\u00F6"  string should be immune to external change  should match "/f%C3%B6%C3%B6" to_s  should be == /föö inspect  should be == # names  should be a kind of Array pattern "/test$/"  string should be immune to external change  should match "/test$/" to_s  should be == /test$/ inspect  should be == # names  should be a kind of Array pattern "/te+st/"  string should be immune to external change  should match "/te+st/"  should not match "/test/"  should not match "/teest/" to_s  should be == /te+st/ inspect  should be == # names  should be a kind of Array pattern "/path with spaces"  string should be immune to external change  should match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces"  should generate template "/path%20with%20spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/foo&bar"  string should be immune to external change  should match "/foo&bar" to_s  should be == /foo&bar inspect  should be == # names  should be a kind of Array pattern "/test.bar"  string should be immune to external change  should match "/test.bar"  should not match "/test0bar" to_s  should be == /test.bar inspect  should be == # names  should be a kind of Array pattern "/foo/bar" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:uri_decode=>false}  string should be immune to external change  should not match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array peeking peek_size  should be == 7  should be == 9  should be nil peek_match  should be == foo bar  should be == foo%20bar  should be nil peek_params  should be == [{}, 7]  should be == [{}, 9]  should be nil Mustermann::Mapper initialize accepts a block with no arguments, using the return value  should be == /bar  should be == /fox to_h  should be == {#=>#], @api expander=#[[], "/bar", {}]}>, @additional values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>} accepts a block with argument, passes instance to it  should be == /bar  should be == /fox to_h  should be == {#=>#], @api expander=#[[], "/bar", {}]}>, @additional values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>} accepts mappings followed by options  should be == /bar  should be == /fox to_h  should be == {#=>#], @api expander=#[[], "/bar", {}]}>, @additional values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>} accepts options followed by mappings  should be == /bar  should be == /fox to_h  should be == {#=>#], @api expander=#[[], "/bar", {}]}>, @additional values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>} allows specifying type  should be == /bar  should be == /fox to_h  should be == {#=>#], @api expander=#[[], "/bar", {}]}>, @additional values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>} convert it maps params  should be == /foo.html  should be == /foo/bar it supports named splats  should be == /foo.html  should be == /foo/bar.html can map from patterns  should be == /foo.html  should be == /foo/bar can map to patterns  should be == /foo.html  should be == /foo/bar can map to expanders  should be == /foo.html  should be == /foo/bar can map to array  should be == /foo.html  should be == /foo.x  should be == /foo.x  should be == /foo/bar Mustermann new string argument  should be a kind of Mustermann::Sinatra  should be a kind of Mustermann::Identity  should be a kind of Mustermann::Rails  should be a kind of Mustermann::Shell  should be a kind of Mustermann::Sinatra  should be a kind of Mustermann::Simple  should be a kind of Mustermann::Template  should raise ArgumentError with "unsupported option :foo for Mustermann::Sinatra"  should raise ArgumentError with message matching /unsupported type :ast/ pattern argument  should be ==  should be a kind of Mustermann::Sinatra regexp argument  should be a kind of Mustermann::Regular  should be a kind of Mustermann::Regular argument implementing #to_pattern  should be a kind of Mustermann::Sinatra  should be a kind of Mustermann::Rails  should be == foo multiple arguments  should be a kind of Mustermann::Composite  should be a kind of Mustermann::Sinatra  should be == |  should be == &  should be a kind of Mustermann::Composite invalid arguments  raise a TypeError for unsupported types []  should be == Mustermann::Identity  should be == Mustermann::Rails  should be == Mustermann::Shell  should be == Mustermann::Sinatra  should be == Mustermann::Simple  should be == Mustermann::Template  should raise ArgumentError with message matching /unsupported type :ast/  should raise ArgumentError with "unsupported type :expander" extend_object special behavior for Sinatra only  should be a kind of Mustermann  should not be a kind of Mustermann::Extension  should be a kind of Mustermann  should not be a kind of Mustermann::Extension  should not be a kind of Mustermann  should be a kind of Mustermann::Extension ===  should be === Mustermann::Pattern ===  raises a NotImplementedError when used directly initialize  raises an ArgumentError for unknown options  does not complain about unknown options if ignore_unknown_options is enabled respond_to?  should not respond to #expand  should not respond to #to_templates  should raise NotImplementedError  should raise NotImplementedError ==  should be == /foo  should not be == /bar  should be == /foo  should not be == /foo eql?  should be eql #  should not be eql #  should be eql #  should not be eql # equal?  should be equal #  should not be equal #  should be equal #  should not be equal # Mustermann::Pyramid pattern ""  string should be immune to external change  should match ""  should not match "/"  should expand  should not expand [:a, 1]  should generate template ""  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo"  should expand  should not expand [:a, 1] to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar"  should expand  should not expand [:a, 1] to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should expand  should not expand [:a, 1] to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/{foo}"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be nil  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should not expand  should generate template "/{foo}" to_s  should be == /{foo} inspect  should be == # names  should be a kind of Array pattern "/*foo"  string should be immune to external change  should match "/foo"  should match "/foo/bar"  should expand  should expand [:foo, nil]  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should be == {"foo"=>["foo", "bar"]}  should generate template "/{+foo}" to_s  should be == /*foo inspect  should be == # names  should be a kind of Array pattern "/{foo:.*}"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should be == {"foo"=>"foo/bar"}  should generate template "/{foo}" to_s  should be == /{foo:.*} inspect  should be == # names  should be a kind of Array Mustermann::Rails pattern ""  string should be immune to external change  should match ""  should not match "/"  should expand  should not expand [:a, 1]  should generate template ""  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo"  should expand  should not expand [:a, 1] to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar"  should expand  should not expand [:a, 1] to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should expand  should not expand [:a, 1] to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/:foo"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be nil  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should not expand  should generate template "/{foo}" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/f\u00F6\u00F6"  string should be immune to external change  should match "/f%C3%B6%C3%B6"  should expand  should not expand [:a, 1] to_s  should be == /föö inspect  should be == # names  should be a kind of Array pattern "/:foo/:bar"  string should be immune to external change  should match "/foo/bar"  should match "/foo.bar/bar.foo"  should match "/user@example.com/name"  should match "/10.1/te.st"  should match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should be == {"foo"=>"bar", "bar"=>"foo"}  should be nil  should expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:foo, "foo"]  should not expand [:bar, "bar"]  should generate template "/{foo}/{bar}" to_s  should be == /:foo/:bar inspect  should be == # names  should be a kind of Array pattern "/hello/:person"  string should be immune to external change  should match "/hello/Frank"  should expand [:person, "Frank"]  should expand [:person, "Frank?"]  should generate template "/hello/{person}" to_s  should be == /hello/:person inspect  should be == # names  should be a kind of Array pattern "/?:foo?/?:bar?"  string should be immune to external change  should match "/?hello?/?world?"  should not match "/hello/world/"  should expand [:foo, "hello"] and [:bar, "world"]  should generate template "/?{foo}?/?{bar}?" to_s  should be == /?:foo?/?:bar? inspect  should be == # names  should be a kind of Array pattern "/:foo_bar"  string should be immune to external change  should match "/hello"  should expand [:foo_bar, "hello"]  should generate template "/{foo_bar}" to_s  should be == /:foo bar inspect  should be == # names  should be a kind of Array pattern "/*foo"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should expand  should expand [:foo, nil]  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should generate template "/{+foo}" to_s  should be == /*foo inspect  should be == # names  should be a kind of Array pattern "/*splat"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+splat}" to_s  should be == /*splat inspect  should be == # names  should be a kind of Array pattern "/:foo/*bar"  string should be immune to external change  should match "/foo/bar/baz"  should match "/foo%2Fbar/baz"  should match "/foo/"  should match "/h%20w/h%20a%20y"  should not match "/foo"  should expand [:foo, "foo"]  should expand [:foo, "foo"] and [:bar, "bar"]  should expand [:foo, "foo"] and [:bar, "foo/bar"]  should expand [:foo, "foo/bar"] and [:bar, "bar"]  should generate template "/{foo}/{+bar}" to_s  should be == /:foo/*bar inspect  should be == # names  should be a kind of Array pattern "/test$/"  string should be immune to external change  should match "/test$/"  should expand to_s  should be == /test$/ inspect  should be == # names  should be a kind of Array pattern "/te+st/"  string should be immune to external change  should match "/te+st/"  should not match "/test/"  should not match "/teest/"  should expand to_s  should be == /te+st/ inspect  should be == # names  should be a kind of Array pattern "/path with spaces"  string should be immune to external change  should match "/path%20with%20spaces"  should match "/path%2Bwith%2Bspaces"  should match "/path+with+spaces"  should expand  should generate template "/path%20with%20spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/foo&bar"  string should be immune to external change  should match "/foo&bar" to_s  should be == /foo&bar inspect  should be == # names  should be a kind of Array pattern "/*a/:foo/*b/*c"  string should be immune to external change  should match "/bar/foo/bling/baz/boom"  should be == {"a"=>"bar", "foo"=>"foo", "b"=>"bling", "c"=>"baz/boom"}  should expand [:a, "bar"], [:foo, "foo"], [:b, "bling"], and [:c, "baz/boom"]  should generate template "/{+a}/{foo}/{+b}/{+c}" to_s  should be == /*a/:foo/*b/*c inspect  should be == # names  should be a kind of Array pattern "/test.bar"  string should be immune to external change  should match "/test.bar"  should not match "/test0bar" to_s  should be == /test.bar inspect  should be == # names  should be a kind of Array pattern "/:file.:ext"  string should be immune to external change  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony%E6%AD%A3%2Ejpg"  should match "/pony%e6%ad%a3%2ejpg"  should match "/pony\u6B63%2Ejpg"  should match "/pony\u6B63%2ejpg"  should match "/pony\u6B63..jpg"  should not match "/.jpg"  should expand [:file, "pony"] and [:ext, "jpg"] to_s  should be == /:file.:ext inspect  should be == # names  should be a kind of Array pattern "/:a(x)"  string should be immune to external change  should match "/a"  should match "/xa"  should match "/axa"  should match "/ax"  should match "/axax"  should match "/axaxx"  should expand [:a, "x"]  should expand [:a, "a"]  should generate template "/{a}x"  should generate template "/{a}" to_s  should be == /:a(x) inspect  should be == # names  should be a kind of Array pattern "/:user(@:host)"  string should be immune to external change  should match "/foo@bar"  should match "/foo.foo@bar"  should match "/foo@bar.bar"  should expand [:user, "foo"]  should expand [:user, "foo"] and [:host, "bar"]  should generate template "/{user}"  should generate template "/{user}@{host}" to_s  should be == /:user(@:host) inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)"  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony.png.jpg"  should match "/pony."  should not match "/.jpg"  should expand [:file, "pony"]  should expand [:file, "pony"] and [:ext, "jpg"]  should generate template "/{file}"  should generate template "/{file}.{ext}" to_s  should be == /:file(.:ext) inspect  should be == # names  should be a kind of Array pattern "/:id/test.bar"  string should be immune to external change  should match "/3/test.bar"  should match "/2/test.bar"  should match "/2E/test.bar"  should match "/2e/test.bar"  should match "/%2E/test.bar" to_s  should be == /:id/test.bar inspect  should be == # names  should be a kind of Array pattern "/10/:id"  string should be immune to external change  should match "/10/test"  should match "/10/te.st" to_s  should be == /10/:id inspect  should be == # names  should be a kind of Array pattern "/10.1/:id"  string should be immune to external change  should match "/10.1/test"  should match "/10.1/te.st" to_s  should be == /10.1/:id inspect  should be == # names  should be a kind of Array pattern "/:foo.:bar/:id"  string should be immune to external change  should match "/10.1/te.st"  should match "/10.1.2/te.st" to_s  should be == /:foo.:bar/:id inspect  should be == # names  should be a kind of Array pattern "/:a/:b(.)(:c)"  string should be immune to external change  should match "/a/b"  should match "/a/b.c"  should match "/a.b/c"  should match "/a.b/c.d"  should not match "/a.b/c.d/e"  should expand [:a, "a"] and [:b, "b"]  should expand [:a, "a"], [:b, "b"], and [:c, "c"]  should generate template "/{a}/{b}"  should generate template "/{a}/{b}."  should generate template "/{a}/{b}.{c}" to_s  should be == /:a/:b(.)(:c) inspect  should be == # names  should be a kind of Array pattern "/:a(foo:b)"  string should be immune to external change  should match "/barfoobar"  should match "/barfoobarfoobar"  should match "/bar"  should not match "/"  should expand [:a, "a"]  should expand [:a, "a"] and [:b, "b"]  should generate template "/{a}foo{b}"  should generate template "/{a}"  should not generate template "/{a}foo" to_s  should be == /:a(foo:b) inspect  should be == # names  should be a kind of Array pattern "/fo(o)"  string should be immune to external change  should match "/fo"  should match "/foo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo"  should expand to_s  should be == /fo(o) inspect  should be == # names  should be a kind of Array pattern "/foo?"  string should be immune to external change  should match "/foo?"  should not match "/foo\\?"  should not match "/fo"  should not match "/foo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo"  should expand to_s  should be == /foo? inspect  should be == # names  should be a kind of Array pattern "/:fOO"  string should be immune to external change  should match "/a" to_s  should be == /:fOO inspect  should be == # names  should be a kind of Array pattern "/:_X"  string should be immune to external change  should match "/a" to_s  should be == /: X inspect  should be == # names  should be a kind of Array pattern "/:f00"  string should be immune to external change  should match "/a" to_s  should be == /:f00 inspect  should be == # names  should be a kind of Array pattern "/:foo(/:bar)/:baz"  string should be immune to external change  should match "/foo/bar/baz"  should expand [:foo, "a"] and [:baz, "b"]  should expand [:foo, "a"], [:baz, "b"], and [:bar, "x"] to_s  should be == /:foo(/:bar)/:baz inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>/\d+/}  string should be immune to external change  should match "/1"  should match "/123"  should not match "/"  should not match "/foo" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>/\d+/}  string should be immune to external change  should match "/1"  should match "/123"  should not match "/"  should not match "/foo" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>"1"}  string should be immune to external change  should match "/1"  should not match "/"  should not match "/foo"  should not match "/123" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>"a.b"}  string should be immune to external change  should match "/a.b"  should match "/a%2Eb"  should match "/a%2eb"  should not match "/ab"  should not match "/afb"  should not match "/a1b"  should not match "/a.bc" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo(/:bar)" with options {:capture=>:alpha}  string should be immune to external change  should match "/abc"  should match "/a/b"  should match "/a"  should not match "/1/2"  should not match "/a/2"  should not match "/1/b"  should not match "/1"  should not match "/1/"  should not match "/a/"  should not match "//a" to_s  should be == /:foo(/:bar) inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>["foo", "bar", /\d+/]}  string should be immune to external change  should match "/1"  should match "/123"  should match "/foo"  should match "/bar"  should not match "/"  should not match "/baz"  should not match "/foo1" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo:bar:baz" with options {:capture=>{:foo=>:alpha, :bar=>/\d+/}}  string should be immune to external change  should match "/ab123xy-1"  should match "/ab123"  should not match "/123abcxy-1"  should not match "/abcxy-1"  should not match "/abc1" to_s  should be == /:foo:bar:baz inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>{:foo=>["foo", "bar", /\d+/]}}  string should be immune to external change  should match "/1"  should match "/123"  should match "/foo"  should match "/bar"  should not match "/"  should not match "/baz"  should not match "/foo1" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)" with options {:capture=>{:ext=>["jpg", "png"]}}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony.png"  should match "/pony%2Epng"  should match "/pony%2epng"  should match "/pony.png.jpg"  should match "/pony.jpg.png"  should match "/pony.gif"  should match "/pony."  should not match ".jpg" to_s  should be == /:file(.:ext) inspect  should be == # names  should be a kind of Array pattern "/:file(:ext)" with options {:capture=>{:ext=>[".jpg", ".png", ".tar.gz"]}}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony.png"  should match "/pony.png.jpg"  should match "/pony.jpg.png"  should match "/pony.tar.gz"  should match "/pony.gif"  should match "/pony."  should not match "/.jpg" to_s  should be == /:file(:ext) inspect  should be == # names  should be a kind of Array pattern "/:a(@:b)" with options {:capture=>{:b=>/\d+/}}  string should be immune to external change  should match "/a"  should match "/a@1"  should match "/a@b"  should match "/a@1@2" to_s  should be == /:a(@:b) inspect  should be == # names  should be a kind of Array pattern "/:a(b)" with options {:greedy=>false}  string should be immune to external change  should match "/ab" to_s  should be == /:a(b) inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)" with options {:greedy=>false}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony.png.jpg" to_s  should be == /:file(.:ext) inspect  should be == # names  should be a kind of Array pattern "/:controller(/:action(/:id(.:format)))"  string should be immune to external change  should match "/content" to_s  should be == /:controller(/:action(/:id(.:format))) inspect  should be == # names  should be a kind of Array pattern "/fo(o)" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo"  should match "/fo"  should not match "/fo(o)" to_s  should be == /fo(o) inspect  should be == # names  should be a kind of Array pattern "/foo/bar" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:uri_decode=>false}  string should be immune to external change  should match "/path with spaces"  should not match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:space_matches_plus=>false}  string should be immune to external change  should match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array invalid syntax  unexpected closing parenthesis  missing closing parenthesis invalid capture names  empty name  named splat  named captures  with capital letter  with integer  same name twice Regexp compatibility ===  non-matching  matching =~  non-matching  matching String#=~  non-matching  matching to_regexp  empty pattern Regexp.try_convert  empty pattern Proc compatibility to_proc  should be a kind of Proc  non-matching  matching peeking peek_size  should be == 7  should be == 9  should be nil peek_match  should be == foo bar  should be == foo%20bar  should be nil peek_params  should be == [{"name"=>"foo bar"}, 7]  should be == [{"name"=>"foo bar"}, 9]  should be nil version compatibility 2.3 pattern "(foo)" with options {:version=>"2.3"}  string should be immune to external change  should not match ""  should not match "foo"  should match "(foo)" to_s  should be == (foo) inspect  should be == # names  should be a kind of Array pattern "\\:name" with options {:version=>"2.3"}  string should be immune to external change  should match "%5cfoo" to_s  should be == \:name inspect  should be == # names  should be a kind of Array 3.0 pattern "(foo)" with options {:version=>"3.0"}  string should be immune to external change  should match ""  should match "foo" to_s  should be == (foo) inspect  should be == # names  should be a kind of Array pattern "\\:name" with options {:version=>"3.0"}  string should be immune to external change  should match ":name"  should not match ":foo" to_s  should be == \:name inspect  should be == # names  should be a kind of Array 3.2 pattern "\\:name" with options {:version=>"3.2"}  string should be immune to external change  should match "%5cfoo" to_s  should be == \:name inspect  should be == # names  should be a kind of Array 4.0 pattern "\\:name" with options {:version=>"4.0"}  string should be immune to external change  should match "foo" to_s  should be == \:name inspect  should be == # names  should be a kind of Array 4.2 pattern "\\:name" with options {:version=>"4.2"}  string should be immune to external change  should match ":name"  should not match ":foo" to_s  should be == \:name inspect  should be == # names  should be a kind of Array Mustermann::RegexpBased  raises a NotImplementedError when used directly Mustermann::Regular pattern ""  string should be immune to external change  should match ""  should not match "/"  should not respond to #expand  should not respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo" to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar" to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/(?.*)"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar" to_s  should be == /(?.*) inspect  should be == #.*)"> names  should be a kind of Array peeking peek_size  should be == 7  should be == 9  should be nil peek_match  should be == foo bar  should be == foo%20bar  should be nil peek_params  should be == [{"name"=>"foo bar"}, 7]  should be == [{"name"=>"foo bar"}, 9]  should be nil Mustermann::Router::Rack matching  should be == 418  should be == 404 params  should be == foo  should be == bar X-Cascade: pass  should be == c throw :pass  should be == b Mustermann::Router::Simple initialize with implicit receiver  should be == bar with explicit receiver  should be == bar with default  should be == bar []=  should be == ["/foo", {"name"=>"foo"}] []  should be == 42 Mustermann::Shell pattern ""  string should be immune to external change  should match ""  should not match "/"  should not respond to #expand  should not respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo"  should be == {}  should be nil to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar" to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should match "/foo%2Fbar"  should match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/*/bar"  string should be immune to external change  should match "/foo/bar"  should match "/bar/bar"  should match "/foo%2Fbar"  should match "/foo%2fbar"  should not match "/foo/foo/bar"  should not match "/bar/foo" to_s  should be == /*/bar inspect  should be == # names  should be a kind of Array pattern "/**/foo"  string should be immune to external change  should match "/a/b/c/foo"  should match "/a/b/c/foo"  should match "/a/.b/c/foo"  should match "/a/.b/c/foo" to_s  should be == /**/foo inspect  should be == # names  should be a kind of Array pattern "/:foo"  string should be immune to external change  should match "/:foo"  should match "/%3Afoo"  should not match "/foo"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/f\u00F6\u00F6"  string should be immune to external change  should match "/f%C3%B6%C3%B6" to_s  should be == /föö inspect  should be == # names  should be a kind of Array pattern "/test$/"  string should be immune to external change  should match "/test$/" to_s  should be == /test$/ inspect  should be == # names  should be a kind of Array pattern "/te+st/"  string should be immune to external change  should match "/te+st/"  should not match "/test/"  should not match "/teest/" to_s  should be == /te+st/ inspect  should be == # names  should be a kind of Array pattern "/path with spaces"  string should be immune to external change  should match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/foo&bar"  string should be immune to external change  should match "/foo&bar" to_s  should be == /foo&bar inspect  should be == # names  should be a kind of Array pattern "/test.bar"  string should be immune to external change  should match "/test.bar"  should not match "/test0bar" to_s  should be == /test.bar inspect  should be == # names  should be a kind of Array pattern "/{foo,bar}"  string should be immune to external change  should not match "/foobar" to_s  should be == /{foo,bar} inspect  should be == # names  should be a kind of Array pattern "/foo/bar" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:uri_decode=>false}  string should be immune to external change  should not match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array =~  should be =~ /foo Mustermann::SimpleMatch  should be == to_s  should be == example names  should be == [] captures  should be == [] Mustermann::Simple pattern ""  string should be immune to external change  should match ""  should not match "/"  should not respond to #expand  should not respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo" to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar" to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/:foo"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/f\u00F6\u00F6"  string should be immune to external change  should match "/f%C3%B6%C3%B6" to_s  should be == /föö inspect  should be == # names  should be a kind of Array pattern "/:foo/:bar"  string should be immune to external change  should match "/foo/bar"  should match "/foo.bar/bar.foo"  should match "/user@example.com/name"  should match "/10.1/te.st"  should match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should be == {"foo"=>"bar", "bar"=>"foo"}  should be nil to_s  should be == /:foo/:bar inspect  should be == # names  should be a kind of Array pattern "/hello/:person"  string should be immune to external change  should match "/hello/Frank" to_s  should be == /hello/:person inspect  should be == # names  should be a kind of Array pattern "/?:foo?/?:bar?"  string should be immune to external change  should match "/hello/world"  should match "/hello"  should match "/"  should match ""  should not match "/hello/world/" to_s  should be == /?:foo?/?:bar? inspect  should be == # names  should be a kind of Array pattern "/*"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should be == {"splat"=>["foo"]} to_s  should be == /* inspect  should be == # names  should be a kind of Array pattern "/:foo/*"  string should be immune to external change  should match "/foo/bar/baz"  should match "/foo/"  should match "/h%20w/h%20a%20y"  should not match "/foo"  should be == {"splat"=>["foo"], "foo"=>"bar"}  should be == {"splat"=>["foo/f o"], "foo"=>"bar"} to_s  should be == /:foo/* inspect  should be == # names  should be a kind of Array pattern "/test$/"  string should be immune to external change  should match "/test$/" to_s  should be == /test$/ inspect  should be == # names  should be a kind of Array pattern "/te+st/"  string should be immune to external change  should match "/te+st/"  should not match "/test/"  should not match "/teest/" to_s  should be == /te+st/ inspect  should be == # names  should be a kind of Array pattern "/path with spaces"  string should be immune to external change  should match "/path%20with%20spaces"  should match "/path%2Bwith%2Bspaces"  should match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/foo&bar"  string should be immune to external change  should match "/foo&bar" to_s  should be == /foo&bar inspect  should be == # names  should be a kind of Array pattern "/*/:foo/*/*"  string should be immune to external change  should match "/bar/foo/bling/baz/boom"  should capture all splat parts  should map to proper params to_s  should be == /*/:foo/*/* inspect  should be == # names  should be a kind of Array pattern "/test.bar"  string should be immune to external change  should match "/test.bar"  should not match "/test0bar" to_s  should be == /test.bar inspect  should be == # names  should be a kind of Array pattern "/:file.:ext"  string should be immune to external change  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony%E6%AD%A3%2Ejpg"  should match "/pony%e6%ad%a3%2ejpg"  should match "/pony\u6B63%2Ejpg"  should match "/pony\u6B63%2ejpg"  should match "/pony\u6B63..jpg"  should not match "/.jpg" to_s  should be == /:file.:ext inspect  should be == # names  should be a kind of Array pattern "/:id/test.bar"  string should be immune to external change  should match "/3/test.bar"  should match "/2/test.bar"  should match "/2E/test.bar"  should match "/2e/test.bar"  should match "/%2E/test.bar" to_s  should be == /:id/test.bar inspect  should be == # names  should be a kind of Array pattern "/10/:id"  string should be immune to external change  should match "/10/test"  should match "/10/te.st" to_s  should be == /10/:id inspect  should be == # names  should be a kind of Array pattern "/10.1/:id"  string should be immune to external change  should match "/10.1/test"  should match "/10.1/te.st" to_s  should be == /10.1/:id inspect  should be == # names  should be a kind of Array pattern "/foo?"  string should be immune to external change  should match "/fo"  should match "/foo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo" to_s  should be == /foo? inspect  should be == # names  should be a kind of Array pattern "/:fOO"  string should be immune to external change  should match "/a" to_s  should be == /:fOO inspect  should be == # names  should be a kind of Array pattern "/:_X"  string should be immune to external change  should match "/a" to_s  should be == /: X inspect  should be == # names  should be a kind of Array pattern "/:f00"  string should be immune to external change  should match "/a" to_s  should be == /:f00 inspect  should be == # names  should be a kind of Array pattern "/:foo.?"  string should be immune to external change  should match "/a."  should match "/xy" to_s  should be == /:foo.? inspect  should be == # names  should be a kind of Array pattern "/(a)"  string should be immune to external change  should match "/(a)"  should not match "/a" to_s  should be == /(a) inspect  should be == # names  should be a kind of Array pattern "/:foo.?" with options {:greedy=>false}  string should be immune to external change  should match "/a."  should match "/xy" to_s  should be == /:foo.? inspect  should be == # names  should be a kind of Array pattern "/foo?" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo"  should match "/fo"  should not match "/foo?" to_s  should be == /foo? inspect  should be == # names  should be a kind of Array pattern "/foo/bar" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:uri_decode=>false}  string should be immune to external change  should match "/path with spaces"  should not match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:space_matches_plus=>false}  string should be immune to external change  should match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array error handling  ? at beginning of route  invalid capture name peeking peek_size  should be == 7  should be == 9  should be nil peek_match  should be == foo bar  should be == foo%20bar  should be nil peek_params  should be == [{"name"=>"foo bar"}, 7]  should be == [{"name"=>"foo bar"}, 9]  should be nil Mustermann::Sinatra pattern ""  string should be immune to external change  should match ""  should not match "/"  should generate template ""  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo" to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar" to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/foo\\/bar"  string should be immune to external change  should match "/foo/bar"  should match "/foo%2Fbar"  should match "/foo%2fbar" to_s  should be == /foo\/bar inspect  should be == # names  should be a kind of Array pattern "/:foo"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/f\u00F6\u00F6"  string should be immune to external change  should match "/f%C3%B6%C3%B6" to_s  should be == /föö inspect  should be == # names  should be a kind of Array pattern "/:foo/:bar"  string should be immune to external change  should match "/foo/bar"  should match "/foo.bar/bar.foo"  should match "/user@example.com/name"  should match "/10.1/te.st"  should match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should be == {"foo"=>"bar", "bar"=>"foo"}  should be nil  should generate template "/{foo}/{bar}" to_s  should be == /:foo/:bar inspect  should be == # names  should be a kind of Array pattern "/{foo}/{bar}"  string should be immune to external change  should match "/foo/bar"  should match "/foo.bar/bar.foo"  should match "/user@example.com/name"  should match "/10.1/te.st"  should match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should be == {"foo"=>"bar", "bar"=>"foo"}  should be nil  should generate template "/{foo}/{bar}" to_s  should be == /{foo}/{bar} inspect  should be == # names  should be a kind of Array pattern "/hello/:person"  string should be immune to external change  should match "/hello/Frank"  should generate template "/hello/{person}" to_s  should be == /hello/:person inspect  should be == # names  should be a kind of Array pattern "/hello/{person}"  string should be immune to external change  should match "/hello/Frank"  should generate template "/hello/{person}" to_s  should be == /hello/{person} inspect  should be == # names  should be a kind of Array pattern "/?:foo?/?:bar?"  string should be immune to external change  should match "/hello/world"  should match "/hello"  should match "/"  should match ""  should expand [:foo, "hello"]  should expand [:foo, "hello"] and [:bar, "world"]  should expand [:bar, "world"]  should expand  should not expand [:baz, ""]  should not match "/hello/world/"  should generate templates "", "/", "//", "//{bar}", "/{bar}", "/{foo}", "/{foo}/", "/{foo}/{bar}", "/{foo}{bar}", "{bar}", "{foo}", "{foo}/", "{foo}/{bar}", and "{foo}{bar}" to_s  should be == /?:foo?/?:bar? inspect  should be == # names  should be a kind of Array pattern "/:foo_bar"  string should be immune to external change  should match "/hello"  should generate template "/{foo_bar}" to_s  should be == /:foo bar inspect  should be == # names  should be a kind of Array pattern "/{foo.bar}"  string should be immune to external change  should match "/hello"  should generate template "/{foo.bar}" to_s  should be == /{foo.bar} inspect  should be == # names  should be a kind of Array pattern "/*"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+splat}"  should be == {"splat"=>["foo"]} to_s  should be == /* inspect  should be == # names  should be a kind of Array pattern "/{+splat}"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+splat}"  should be == {"splat"=>["foo"]} to_s  should be == /{+splat} inspect  should be == # names  should be a kind of Array pattern "/*foo"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+foo}"  should be == {"foo"=>"foo"}  should be == {"foo"=>"foo/bar"} to_s  should be == /*foo inspect  should be == # names  should be a kind of Array pattern "/{+foo}"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+foo}"  should be == {"foo"=>"foo"}  should be == {"foo"=>"foo/bar"} to_s  should be == /{+foo} inspect  should be == # names  should be a kind of Array pattern "/*foo/*bar"  string should be immune to external change  should match "/foo/bar"  should generate template "/{+foo}/{+bar}" to_s  should be == /*foo/*bar inspect  should be == # names  should be a kind of Array pattern "/{+foo}/{+bar}"  string should be immune to external change  should match "/foo/bar"  should generate template "/{+foo}/{+bar}" to_s  should be == /{+foo}/{+bar} inspect  should be == # names  should be a kind of Array pattern "/:foo/*"  string should be immune to external change  should match "/foo/bar/baz"  should match "/foo/"  should match "/h%20w/h%20a%20y"  should not match "/foo"  should generate template "/{foo}/{+splat}"  should be == {"splat"=>["foo"], "foo"=>"bar"}  should be == {"splat"=>["foo/f o"], "foo"=>"bar"} to_s  should be == /:foo/* inspect  should be == # names  should be a kind of Array pattern "/{foo}/*"  string should be immune to external change  should match "/foo/bar/baz"  should match "/foo/"  should match "/h%20w/h%20a%20y"  should not match "/foo"  should generate template "/{foo}/{+splat}"  should be == {"splat"=>["foo"], "foo"=>"bar"}  should be == {"splat"=>["foo/f o"], "foo"=>"bar"} to_s  should be == /{foo}/* inspect  should be == # names  should be a kind of Array pattern "/test$/"  string should be immune to external change  should match "/test$/" to_s  should be == /test$/ inspect  should be == # names  should be a kind of Array pattern "/te+st/"  string should be immune to external change  should match "/te+st/"  should not match "/test/"  should not match "/teest/" to_s  should be == /te+st/ inspect  should be == # names  should be a kind of Array pattern "/path with spaces"  string should be immune to external change  should match "/path%20with%20spaces"  should match "/path%2Bwith%2Bspaces"  should match "/path+with+spaces"  should generate template "/path%20with%20spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/foo&bar"  string should be immune to external change  should match "/foo&bar" to_s  should be == /foo&bar inspect  should be == # names  should be a kind of Array pattern "/foo\\{bar"  string should be immune to external change  should match "/foo%7Bbar" to_s  should be == /foo\{bar inspect  should be == # names  should be a kind of Array pattern "/*/:foo/*/*"  string should be immune to external change  should match "/bar/foo/bling/baz/boom"  should capture all splat parts  should map to proper params to_s  should be == /*/:foo/*/* inspect  should be == # names  should be a kind of Array pattern "/{+splat}/{foo}/{+splat}/{+splat}"  string should be immune to external change  should match "/bar/foo/bling/baz/boom"  should capture all splat parts  should map to proper params to_s  should be == /{+splat}/{foo}/{+splat}/{+splat} inspect  should be == # names  should be a kind of Array pattern "/test.bar"  string should be immune to external change  should match "/test.bar"  should not match "/test0bar" to_s  should be == /test.bar inspect  should be == # names  should be a kind of Array pattern "/:file.:ext"  string should be immune to external change  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony%E6%AD%A3%2Ejpg"  should match "/pony%e6%ad%a3%2ejpg"  should match "/pony\u6B63%2Ejpg"  should match "/pony\u6B63%2ejpg"  should match "/pony\u6B63..jpg"  should not match "/.jpg" to_s  should be == /:file.:ext inspect  should be == # names  should be a kind of Array pattern "/(:a)x?"  string should be immune to external change  should match "/a"  should match "/xa"  should match "/axa"  should match "/ax"  should match "/axax"  should match "/axaxx"  should generate template "/{a}x"  should generate template "/{a}" to_s  should be == /(:a)x? inspect  should be == # names  should be a kind of Array pattern "/:user(@:host)?"  string should be immune to external change  should match "/foo@bar"  should match "/foo.foo@bar"  should match "/foo@bar.bar"  should generate template "/{user}"  should generate template "/{user}@{host}" to_s  should be == /:user(@:host)? inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)?"  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony.png.jpg"  should match "/pony."  should not match "/.jpg"  should generate template "/{file}"  should generate template "/{file}.{ext}"  should not generate template "/{file}." to_s  should be == /:file(.:ext)? inspect  should be == # names  should be a kind of Array pattern "/:id/test.bar"  string should be immune to external change  should match "/3/test.bar"  should match "/2/test.bar"  should match "/2E/test.bar"  should match "/2e/test.bar"  should match "/%2E/test.bar" to_s  should be == /:id/test.bar inspect  should be == # names  should be a kind of Array pattern "/10/:id"  string should be immune to external change  should match "/10/test"  should match "/10/te.st" to_s  should be == /10/:id inspect  should be == # names  should be a kind of Array pattern "/10.1/:id"  string should be immune to external change  should match "/10.1/test"  should match "/10.1/te.st" to_s  should be == /10.1/:id inspect  should be == # names  should be a kind of Array pattern "/:foo.:bar/:id"  string should be immune to external change  should match "/10.1/te.st"  should match "/10.1.2/te.st" to_s  should be == /:foo.:bar/:id inspect  should be == # names  should be a kind of Array pattern "/:a/:b.?:c?"  string should be immune to external change  should match "/a/b"  should match "/a/b.c"  should match "/a.b/c"  should match "/a.b/c.d"  should not match "/a.b/c.d/e" to_s  should be == /:a/:b.?:c? inspect  should be == # names  should be a kind of Array pattern "/:a(foo:b)?"  string should be immune to external change  should match "/barfoobar"  should match "/barfoobarfoobar"  should match "/bar"  should not match "/" to_s  should be == /:a(foo:b)? inspect  should be == # names  should be a kind of Array pattern "/foo?"  string should be immune to external change  should match "/fo"  should match "/foo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo" to_s  should be == /foo? inspect  should be == # names  should be a kind of Array pattern "/foo\\?"  string should be immune to external change  should match "/foo?"  should not match "/foo\\?"  should not match "/fo"  should not match "/foo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo" to_s  should be == /foo\? inspect  should be == # names  should be a kind of Array pattern "/foo\\\\?"  string should be immune to external change  should match "/foo%5c"  should match "/foo"  should not match "/foo\\?"  should not match "/fo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo" to_s  should be == /foo\\? inspect  should be == # names  should be a kind of Array pattern "/\\("  string should be immune to external change  should match "/(" to_s  should be == /\( inspect  should be == # names  should be a kind of Array pattern "/\\(?"  string should be immune to external change  should match "/("  should match "/" to_s  should be == /\(? inspect  should be == # names  should be a kind of Array pattern "/(\\()?"  string should be immune to external change  should match "/("  should match "/" to_s  should be == /(\()? inspect  should be == # names  should be a kind of Array pattern "/(\\(\\))?"  string should be immune to external change  should match "/"  should match "/()"  should not match "/(" to_s  should be == /(\(\))? inspect  should be == # names  should be a kind of Array pattern "/\\(\\)?"  string should be immune to external change  should match "/("  should match "/()"  should not match "/" to_s  should be == /\(\)? inspect  should be == # names  should be a kind of Array pattern "/\\*"  string should be immune to external change  should match "/*"  should not match "/a" to_s  should be == /\* inspect  should be == # names  should be a kind of Array pattern "/\\*/*"  string should be immune to external change  should match "/*/b/c"  should not match "/a/b/c" to_s  should be == /\*/* inspect  should be == # names  should be a kind of Array pattern "/\\:foo"  string should be immune to external change  should match "/:foo"  should not match "/foo" to_s  should be == /\:foo inspect  should be == # names  should be a kind of Array pattern "/:fOO"  string should be immune to external change  should match "/a" to_s  should be == /:fOO inspect  should be == # names  should be a kind of Array pattern "/:_X"  string should be immune to external change  should match "/a" to_s  should be == /: X inspect  should be == # names  should be a kind of Array pattern "/:f00"  string should be immune to external change  should match "/a" to_s  should be == /:f00 inspect  should be == # names  should be a kind of Array pattern "/:foo(/:bar)?/:baz?"  string should be immune to external change  should match "/foo/bar/baz" to_s  should be == /:foo(/:bar)?/:baz? inspect  should be == # names  should be a kind of Array pattern "/(foo|bar)"  string should be immune to external change  should match "/foo"  should match "/bar"  should generate template "/foo"  should generate template "/bar" to_s  should be == /(foo|bar) inspect  should be == # names  should be a kind of Array pattern "/(foo\\|bar)"  string should be immune to external change  should match "/foo%7Cbar"  should generate template "/foo%7Cbar"  should not match "/foo"  should not match "/bar"  should not generate template "/foo"  should not generate template "/bar" to_s  should be == /(foo\|bar) inspect  should be == # names  should be a kind of Array pattern "/(:a/:b|:c)"  string should be immune to external change  should match "/foo"  should match "/foo/bar"  should generate template "/{a}/{b}"  should generate template "/{c}"  should expand [:a, "foo"] and [:b, "bar"]  should expand [:c, "foo"]  should not expand [:a, "foo"], [:b, "bar"], and [:c, "baz"] to_s  should be == /(:a/:b|:c) inspect  should be == # names  should be a kind of Array pattern "/:a/:b|:c"  string should be immune to external change  should match "foo"  should match "/foo/bar"  should generate template "/{a}/{b}"  should generate template "{c}"  should expand [:a, "foo"] and [:b, "bar"]  should expand [:c, "foo"]  should not expand [:a, "foo"], [:b, "bar"], and [:c, "baz"] to_s  should be == /:a/:b|:c inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>/\d+/}  string should be immune to external change  should match "/1"  should match "/123"  should not match "/"  should not match "/foo" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>/\d+/}  string should be immune to external change  should match "/1"  should match "/123"  should not match "/"  should not match "/foo" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>"1"}  string should be immune to external change  should match "/1"  should not match "/"  should not match "/foo"  should not match "/123" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>"a.b"}  string should be immune to external change  should match "/a.b"  should match "/a%2Eb"  should match "/a%2eb"  should not match "/ab"  should not match "/afb"  should not match "/a1b"  should not match "/a.bc" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo(/:bar)?" with options {:capture=>:alpha}  string should be immune to external change  should match "/abc"  should match "/a/b"  should match "/a"  should not match "/1/2"  should not match "/a/2"  should not match "/1/b"  should not match "/1"  should not match "/1/"  should not match "/a/"  should not match "//a" to_s  should be == /:foo(/:bar)? inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>["foo", "bar", /\d+/]}  string should be immune to external change  should match "/1"  should match "/123"  should match "/foo"  should match "/bar"  should not match "/"  should not match "/baz"  should not match "/foo1" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo:bar:baz" with options {:capture=>{:foo=>:alpha, :bar=>/\d+/}}  string should be immune to external change  should match "/ab123xy-1"  should match "/ab123"  should not match "/123abcxy-1"  should not match "/abcxy-1"  should not match "/abc1" to_s  should be == /:foo:bar:baz inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>{:foo=>["foo", "bar", /\d+/]}}  string should be immune to external change  should match "/1"  should match "/123"  should match "/foo"  should match "/bar"  should not match "/"  should not match "/baz"  should not match "/foo1" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)?" with options {:capture=>{:ext=>["jpg", "png"]}}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony.png"  should match "/pony%2Epng"  should match "/pony%2epng"  should match "/pony.png.jpg"  should match "/pony.jpg.png"  should match "/pony.gif"  should match "/pony."  should not match ".jpg" to_s  should be == /:file(.:ext)? inspect  should be == # names  should be a kind of Array pattern "/:file:ext?" with options {:capture=>{:ext=>[".jpg", ".png", ".tar.gz"]}}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony.png"  should match "/pony.png.jpg"  should match "/pony.jpg.png"  should match "/pony.tar.gz"  should match "/pony.gif"  should match "/pony."  should not match "/.jpg" to_s  should be == /:file:ext? inspect  should be == # names  should be a kind of Array pattern "/:a(@:b)?" with options {:capture=>{:b=>/\d+/}}  string should be immune to external change  should match "/a"  should match "/a@1"  should match "/a@b"  should match "/a@1@2" to_s  should be == /:a(@:b)? inspect  should be == # names  should be a kind of Array pattern "/(:a)b?" with options {:greedy=>false}  string should be immune to external change  should match "/ab" to_s  should be == /(:a)b? inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)?" with options {:greedy=>false}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony.png.jpg" to_s  should be == /:file(.:ext)? inspect  should be == # names  should be a kind of Array pattern "/auth/*" with options {:except=>"/auth/login"}  string should be immune to external change  should match "/auth/admin"  should match "/auth/foobar"  should not match "/auth/login" to_s  should be == /auth/* inspect  should be == # names  should be a kind of Array pattern "/:foo/:bar" with options {:except=>"/:bar/20"}  string should be immune to external change  should match "/foo/bar"  should not match "/20/20" to_s  should be == /:foo/:bar inspect  should be == # names  should be a kind of Array pattern "/foo?" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo"  should match "/fo"  should not match "/foo?" to_s  should be == /foo? inspect  should be == # names  should be a kind of Array pattern "/foo/bar" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:uri_decode=>false}  string should be immune to external change  should match "/path with spaces"  should not match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:space_matches_plus=>false}  string should be immune to external change  should match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array invalid syntax  unexpected closing parenthesis  missing closing parenthesis  missing unescaped closing parenthesis  ? at beginning of route  double ?  dangling escape invalid capture names  empty name  named splat  named captures  with capital letter  with integer  same name twice Regexp compatibility ===  non-matching  matching =~  non-matching  matching String#=~  non-matching  matching to_regexp  empty pattern Regexp.try_convert  empty pattern Proc compatibility to_proc  should be a kind of Proc  non-matching  matching peeking peek_size  should be == 7  should be == 9  should be nil peek_match  should be == foo bar  should be == foo%20bar  should be nil peek_params  should be == [{"name"=>"foo bar"}, 7]  should be == [{"name"=>"foo bar"}, 9]  should be nil Mustermann::StringScanner scan  should give scan result :scan, "foo", and {}  should give scan result :scan, /foo/, and {}  should give scan result :scan, :name, and {}  should give scan result :scan, ":name", and {}  should not give scan result :scan, " ", and {}  should not give scan result :scan, "bar", and {}  should give scan result :scan, "bar", and {}  should give scan result :scan, "bar", and {}  should give scan result :scan, "foo", and {} check  should give scan result :check, "foo", and {}  should give scan result :check, /foo/, and {}  should give scan result :check, :name, and {}  should give scan result :check, ":name", and {}  should not give scan result :check, " ", and {}  should not give scan result :check, "bar", and {}  should give scan result :check, "foo", and {}  should give scan result :check, "bar", and {} scan_until  should give scan result :scan_until, "foo", and {}  should give scan result :scan_until, ":name", and {}  should give scan result :scan_until, " ", and {}  should give scan result :scan_until, "bar", and {}  should not give scan result :scan_until, "baz", and {}  should give scan result :check, "bar", and {}  should give scan result :scan, "foo", and {} check_until  should give scan result :check_until, "foo", and {}  should give scan result :check_until, ":name", and {}  should give scan result :check_until, " ", and {}  should give scan result :check_until, "bar", and {}  should not give scan result :check_until, "baz", and {}  should not give scan result :check, "bar", and {} getch  should be == f  should give scan result :scan, "bar", and {}  should give scan result :scan, "foo", and {} <<  should give scan result :scan_until, "baz", and {} eos?  should not be eos  should be eos beginning_of_line?  should be beginning of line  should not be beginning of line  should not be beginning of line  should be beginning of line rest  should be == foo bar  should be == bar rest_size  should be == 7  should be == 3 peek  should be == foo  should be == foo  should be == bar inspect  should be == #  should be == # []  should be == foo bar  should be == bar  should be == bar  should be nil  should be nil  should be nil unscan  should be == bar  should be == foo bar  should raise Mustermann::StringScanner::ScanError with "unscan failed: previous match record not exist" terminate  should be eos to_h  should be == {}  example at /build/ruby-mustermann19-0.4.3+git20160621/spec/string_scanner_spec.rb:256 to_s  should be == foo bar clear_cache  should be == 0 Mustermann::Template pattern ""  string should be immune to external change  should match ""  should not match "/"  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array to_templates  should be == [""] pattern "/"  string should be immune to external change  should match "/"  should not match "/foo" to_s  should be == / inspect  should be == # names  should be a kind of Array to_templates  should be == ["/"] pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar" to_s  should be == /foo inspect  should be == # names  should be a kind of Array to_templates  should be == ["/foo"] pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["/foo/bar"] pattern "/:foo"  string should be immune to external change  should match "/:foo"  should match "/%3Afoo"  should not match "/foo"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array to_templates  should be == ["/:foo"] pattern "/f\u00F6\u00F6"  string should be immune to external change  should match "/f%C3%B6%C3%B6" to_s  should be == /föö inspect  should be == # names  should be a kind of Array to_templates  should be == ["/f\u00F6\u00F6"] pattern "/test$/"  string should be immune to external change  should match "/test$/" to_s  should be == /test$/ inspect  should be == # names  should be a kind of Array to_templates  should be == ["/test$/"] pattern "/te+st/"  string should be immune to external change  should match "/te+st/"  should not match "/test/"  should not match "/teest/" to_s  should be == /te+st/ inspect  should be == # names  should be a kind of Array to_templates  should be == ["/te+st/"] pattern "/path with spaces"  string should be immune to external change  should match "/path%20with%20spaces"  should match "/path%2Bwith%2Bspaces"  should match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array to_templates  should be == ["/path with spaces"] pattern "/foo&bar"  string should be immune to external change  should match "/foo&bar" to_s  should be == /foo&bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["/foo&bar"] pattern "/test.bar"  string should be immune to external change  should match "/test.bar"  should not match "/test0bar" to_s  should be == /test.bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["/test.bar"] pattern "/path with spaces" with options {:space_matches_plus=>false}  string should be immune to external change  should match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array to_templates  should be == ["/path with spaces"] pattern "/path with spaces" with options {:uri_decode=>false}  string should be immune to external change  should not match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array to_templates  should be == ["/path with spaces"] level 1 without operator pattern "/hello/{person}"  string should be immune to external change  should match "/hello/Frank"  should match "/hello/a_b~c"  should match "/hello/a.%20"  should not match "/hello/:"  should not match "/hello//"  should not match "/hello/?"  should not match "/hello/#"  should not match "/hello/["  should not match "/hello/]"  should not match "/hello/@"  should not match "/hello/!"  should not match "/hello/*"  should not match "/hello/+"  should not match "/hello/,"  should not match "/hello/;"  should not match "/hello/="  should be == {"person"=>"Frank"} to_s  should be == /hello/{person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello/{person}"] pattern "/{foo}/{bar}"  string should be immune to external change  should match "/foo/bar"  should match "/foo.bar/bar.foo"  should match "/10.1/te.st"  should match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /{foo}/{bar} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/{foo}/{bar}"] level 2 operator + pattern "/hello/{+person}"  string should be immune to external change  should match "/hello/Frank"  should match "/hello/a_b~c"  should match "/hello/a.%20"  should match "/hello/a/%20"  should match "/hello/:"  should match "/hello//"  should match "/hello/?"  should match "/hello/#"  should match "/hello/["  should match "/hello/]"  should match "/hello/@"  should match "/hello/!"  should match "/hello/*"  should match "/hello/+"  should match "/hello/,"  should match "/hello/;"  should match "/hello/=" to_s  should be == /hello/{+person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello/{+person}"] pattern "/{+foo}/{bar}"  string should be immune to external change  should match "/foo/bar"  should match "/foo.bar/bar.foo"  should match "/foo/bar/bar.foo"  should match "/10.1/te.st"  should match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /{+foo}/{bar} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/{+foo}/{bar}"] operator # pattern "/hello/{#person}"  string should be immune to external change  should match "/hello/#Frank"  should match "/hello/#a_b~c"  should match "/hello/#a.%20"  should match "/hello/#a/%20"  should match "/hello/#:"  should match "/hello/#/"  should match "/hello/#?"  should match "/hello/##"  should match "/hello/#["  should match "/hello/#]"  should match "/hello/\#@"  should match "/hello/#!"  should match "/hello/#*"  should match "/hello/#+"  should match "/hello/#,"  should match "/hello/#;"  should match "/hello/#="  should not match "/hello/Frank"  should not match "/hello/a_b~c"  should not match "/hello/a.%20"  should not match "/hello/:"  should not match "/hello//"  should not match "/hello/?"  should not match "/hello/#"  should not match "/hello/["  should not match "/hello/]"  should not match "/hello/@"  should not match "/hello/!"  should not match "/hello/*"  should not match "/hello/+"  should not match "/hello/,"  should not match "/hello/;"  should not match "/hello/="  should be == {"person"=>"Frank"} to_s  should be == /hello/{#person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello/{#person}"] pattern "/{+foo}/{#bar}"  string should be immune to external change  should match "/foo/#bar"  should match "/foo.bar/#bar.foo"  should match "/foo/bar/#bar.foo"  should match "/10.1/#te.st"  should match "/10.1.2/#te.st"  should not match "/foo%2F#bar"  should not match "/foo%2f#bar"  should be == {"foo"=>"hello", "bar"=>"Frank"} to_s  should be == /{+foo}/{#bar} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/{+foo}/{#bar}"] level 3 without operator pattern "{a,b,c}"  string should be immune to external change  should match "~x,42,_"  should not match "~x,42"  should not match "~x/42"  should not match "~x#42"  should not match "~x,42,_#42"  should be == {"a"=>"d", "b"=>"f", "c"=>"g"} to_s  should be == {a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{a,b,c}"] operator + pattern "{+a,b,c}"  string should be immune to external change  should match "~x,42,_"  should match "~x,42,_#42"  should match "~/x,42,_/42"  should not match "~x,42"  should not match "~x/42"  should not match "~x#42" to_s  should be == {+a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{+a,b,c}"] operator # pattern "{#a,b,c}"  string should be immune to external change  should match "#~x,42,_"  should match "#~x,42,_#42"  should match "#~/x,42,_#42"  should not match "~x,42,_"  should not match "~x,42,_#42"  should not match "~/x,42,_#42"  should not match "~x,42"  should not match "~x/42"  should not match "~x#42" to_s  should be == {#a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{#a,b,c}"] operator . pattern "/hello/{.person}"  string should be immune to external change  should match "/hello/.Frank"  should match "/hello/.a_b~c"  should not match "/hello/.:"  should not match "/hello/./"  should not match "/hello/.?"  should not match "/hello/.#"  should not match "/hello/.["  should not match "/hello/.]"  should not match "/hello/.@"  should not match "/hello/.!"  should not match "/hello/.*"  should not match "/hello/.+"  should not match "/hello/.,"  should not match "/hello/.;"  should not match "/hello/.="  should not match "/hello/Frank"  should not match "/hello/a_b~c"  should not match "/hello/a.%20"  should not match "/hello/:"  should not match "/hello//"  should not match "/hello/?"  should not match "/hello/#"  should not match "/hello/["  should not match "/hello/]"  should not match "/hello/@"  should not match "/hello/!"  should not match "/hello/*"  should not match "/hello/+"  should not match "/hello/,"  should not match "/hello/;"  should not match "/hello/=" to_s  should be == /hello/{.person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello/{.person}"] pattern "{.a,b,c}"  string should be immune to external change  should match ".~x.42._"  should not match ".~x,42"  should not match ".~x/42"  should not match ".~x#42"  should not match ".~x,42,_"  should not match "~x.42._" to_s  should be == {.a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{.a,b,c}"] operator / pattern "/hello{/person}"  string should be immune to external change  should match "/hello/Frank"  should match "/hello/a_b~c"  should not match "/hello//:"  should not match "/hello///"  should not match "/hello//?"  should not match "/hello//#"  should not match "/hello//["  should not match "/hello//]"  should not match "/hello//@"  should not match "/hello//!"  should not match "/hello//*"  should not match "/hello//+"  should not match "/hello//,"  should not match "/hello//;"  should not match "/hello//="  should not match "/hello/:"  should not match "/hello//"  should not match "/hello/?"  should not match "/hello/#"  should not match "/hello/["  should not match "/hello/]"  should not match "/hello/@"  should not match "/hello/!"  should not match "/hello/*"  should not match "/hello/+"  should not match "/hello/,"  should not match "/hello/;"  should not match "/hello/=" to_s  should be == /hello{/person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello{/person}"] pattern "{/a,b,c}"  string should be immune to external change  should match "/~x/42/_"  should not match "/~x,42"  should not match "/~x.42"  should not match "/~x#42"  should not match "/~x,42,_"  should not match "~x/42/_" to_s  should be == {/a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{/a,b,c}"] operator ; pattern "/hello/{;person}"  string should be immune to external change  should match "/hello/;person=Frank"  should match "/hello/;person=a_b~c"  should match "/hello/;person"  should not match "/hello/;persona=Frank"  should not match "/hello/;persona=a_b~c"  should not match "/hello/;person=:"  should not match "/hello/;person=/"  should not match "/hello/;person=?"  should not match "/hello/;person=#"  should not match "/hello/;person=["  should not match "/hello/;person=]"  should not match "/hello/;person=@"  should not match "/hello/;person=!"  should not match "/hello/;person=*"  should not match "/hello/;person=+"  should not match "/hello/;person=,"  should not match "/hello/;person=;"  should not match "/hello/;person=="  should not match "/hello/;Frank"  should not match "/hello/;a_b~c"  should not match "/hello/;a.%20"  should not match "/hello/:"  should not match "/hello//"  should not match "/hello/?"  should not match "/hello/#"  should not match "/hello/["  should not match "/hello/]"  should not match "/hello/@"  should not match "/hello/!"  should not match "/hello/*"  should not match "/hello/+"  should not match "/hello/,"  should not match "/hello/;"  should not match "/hello/=" to_s  should be == /hello/{;person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello/{;person}"] pattern "{;a,b,c}"  string should be immune to external change  should match ";a=~x;b=42;c=_"  should match ";a=~x;b;c=_"  should not match ";a=~x;c=_;b=42"  should not match ";a=~x;b=42"  should not match "a=~x;b=42"  should not match ";a=~x;b=#42;c"  should not match ";a=~x,b=42,c=_"  should not match "~x;b=42;c=_" to_s  should be == {;a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{;a,b,c}"] operator ? pattern "/hello/{?person}"  string should be immune to external change  should match "/hello/?person=Frank"  should match "/hello/?person=a_b~c"  should match "/hello/?person"  should not match "/hello/?persona=Frank"  should not match "/hello/?persona=a_b~c"  should not match "/hello/?person=:"  should not match "/hello/?person=/"  should not match "/hello/?person=?"  should not match "/hello/?person=#"  should not match "/hello/?person=["  should not match "/hello/?person=]"  should not match "/hello/?person=@"  should not match "/hello/?person=!"  should not match "/hello/?person=*"  should not match "/hello/?person=+"  should not match "/hello/?person=,"  should not match "/hello/?person=;"  should not match "/hello/?person=="  should not match "/hello/?Frank"  should not match "/hello/?a_b~c"  should not match "/hello/?a.%20"  should not match "/hello/:"  should not match "/hello//"  should not match "/hello/?"  should not match "/hello/#"  should not match "/hello/["  should not match "/hello/]"  should not match "/hello/@"  should not match "/hello/!"  should not match "/hello/*"  should not match "/hello/+"  should not match "/hello/,"  should not match "/hello/;"  should not match "/hello/=" to_s  should be == /hello/{?person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello/{?person}"] pattern "{?a,b,c}"  string should be immune to external change  should match "?a=~x&b=42&c=_"  should match "?a=~x&b&c=_"  should not match "?a=~x&c=_&b=42"  should not match "?a=~x&b=42"  should not match "a=~x&b=42"  should not match "?a=~x&b=#42&c"  should not match "?a=~x,b=42,c=_"  should not match "~x&b=42&c=_" to_s  should be == {?a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{?a,b,c}"] operator & pattern "/hello/{&person}"  string should be immune to external change  should match "/hello/&person=Frank"  should match "/hello/&person=a_b~c"  should match "/hello/&person"  should not match "/hello/&persona=Frank"  should not match "/hello/&persona=a_b~c"  should not match "/hello/&person=:"  should not match "/hello/&person=/"  should not match "/hello/&person=?"  should not match "/hello/&person=#"  should not match "/hello/&person=["  should not match "/hello/&person=]"  should not match "/hello/&person=@"  should not match "/hello/&person=!"  should not match "/hello/&person=*"  should not match "/hello/&person=+"  should not match "/hello/&person=,"  should not match "/hello/&person=;"  should not match "/hello/&person=="  should not match "/hello/&Frank"  should not match "/hello/&a_b~c"  should not match "/hello/&a.%20"  should not match "/hello/:"  should not match "/hello//"  should not match "/hello/?"  should not match "/hello/#"  should not match "/hello/["  should not match "/hello/]"  should not match "/hello/@"  should not match "/hello/!"  should not match "/hello/*"  should not match "/hello/+"  should not match "/hello/,"  should not match "/hello/;"  should not match "/hello/=" to_s  should be == /hello/{&person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello/{&person}"] pattern "{&a,b,c}"  string should be immune to external change  should match "&a=~x&b=42&c=_"  should match "&a=~x&b&c=_"  should not match "&a=~x&c=_&b=42"  should not match "&a=~x&b=42"  should not match "a=~x&b=42"  should not match "&a=~x&b=#42&c"  should not match "&a=~x,b=42,c=_"  should not match "~x&b=42&c=_" to_s  should be == {&a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{&a,b,c}"] level 4 without operator prefix pattern "{a:3}/bar"  string should be immune to external change  should match "foo/bar"  should match "fo/bar"  should match "f/bar"  should not match "fooo/bar" to_s  should be == {a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{a:3}/bar"] pattern "{a:3}{b}"  string should be immune to external change  should match "foobar" to_s  should be == {a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{a:3}{b}"] expand pattern "{a*}"  string should be immune to external change  should match "a"  should match "a,b"  should match "a,b,c"  should not match "a,b/c"  should not match "a,"  should be == {"a"=>["a"]}  should be == {"a"=>["a", "b"]} to_s  should be == {a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{a*}"] pattern "{a*},{b}"  string should be immune to external change  should match "a,b"  should match "a,b,c"  should not match "a,b/c"  should not match "a,"  should be == {"a"=>["a"], "b"=>"b"}  should be == {"a"=>["a", "b"], "b"=>"c"} to_s  should be == {a*},{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{a*},{b}"] pattern "{a*,b}"  string should be immune to external change  should match "a,b"  should match "a,b,c"  should not match "a,b/c"  should not match "a,"  should be == {"a"=>["a"], "b"=>"b"}  should be == {"a"=>["a", "b"], "b"=>"c"} to_s  should be == {a*,b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{a*,b}"] operator + pattern "/{a}/{+b}"  string should be immune to external change  should match "/foo/bar/baz"  should expand [:a, "foo/bar"] and [:b, "foo/bar"] to_s  should be == /{a}/{+b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/{a}/{+b}"] prefix pattern "{+a:3}/bar"  string should be immune to external change  should match "foo/bar"  should match "fo/bar"  should match "f/bar"  should not match "fooo/bar" to_s  should be == {+a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{+a:3}/bar"] pattern "{+a:3}{b}"  string should be immune to external change  should match "foobar" to_s  should be == {+a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{+a:3}{b}"] expand pattern "{+a*}"  string should be immune to external change  should match "a"  should match "a,b"  should match "a,b,c"  should match "a,b/c" to_s  should be == {+a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{+a*}"] pattern "{+a*},{b}"  string should be immune to external change  should match "a,b"  should match "a,b,c"  should not match "a,b/c"  should not match "a,"  should be == {"a"=>["a"], "b"=>"b"}  should be == {"a"=>["a", "b"], "b"=>"c"} to_s  should be == {+a*},{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{+a*},{b}"] operator # prefix pattern "{#a:3}/bar"  string should be immune to external change  should match "#foo/bar"  should match "#fo/bar"  should match "#f/bar"  should not match "#fooo/bar" to_s  should be == {#a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{#a:3}/bar"] pattern "{#a:3}{b}"  string should be immune to external change  should match "#foobar" to_s  should be == {#a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{#a:3}{b}"] expand pattern "{#a*}"  string should be immune to external change  should match "#a"  should match "#a,b"  should match "#a,b,c"  should match "#a,b/c"  should be == {"a"=>["a", "b"]}  should be == {"a"=>["a", "b", "c"]} to_s  should be == {#a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{#a*}"] pattern "{#a*,b}"  string should be immune to external change  should match "#a,b"  should match "#a,b,c"  should not match "#a,"  should be == {"a"=>["a"], "b"=>"b"}  should be == {"a"=>["a", "b"], "b"=>"c"} to_s  should be == {#a*,b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{#a*,b}"] operator . prefix pattern "{.a:3}/bar"  string should be immune to external change  should match ".foo/bar"  should match ".fo/bar"  should match ".f/bar"  should not match ".fooo/bar" to_s  should be == {.a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{.a:3}/bar"] pattern "{.a:3}{b}"  string should be immune to external change  should match ".foobar" to_s  should be == {.a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{.a:3}{b}"] expand pattern "{.a*}"  string should be immune to external change  should match ".a"  should match ".a.b"  should match ".a.b.c"  should not match ".a.b,c"  should not match ".a," to_s  should be == {.a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{.a*}"] pattern "{.a*,b}"  string should be immune to external change  should match ".a.b"  should match ".a.b.c"  should not match ".a.b/c"  should not match ".a."  should be == {"a"=>["a"], "b"=>"b"}  should be == {"a"=>["a", "b"], "b"=>"c"} to_s  should be == {.a*,b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{.a*,b}"] operator / prefix pattern "{/a:3}/bar"  string should be immune to external change  should match "/foo/bar"  should match "/fo/bar"  should match "/f/bar"  should not match "/fooo/bar" to_s  should be == {/a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{/a:3}/bar"] pattern "{/a:3}{b}"  string should be immune to external change  should match "/foobar" to_s  should be == {/a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{/a:3}{b}"] expand pattern "{/a*}"  string should be immune to external change  should match "/a"  should match "/a/b"  should match "/a/b/c"  should not match "/a/b,c"  should not match "/a," to_s  should be == {/a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{/a*}"] pattern "{/a*,b}"  string should be immune to external change  should match "/a/b"  should match "/a/b/c"  should not match "/a/b,c"  should not match "/a/"  should be == {"a"=>["a"], "b"=>"b"}  should be == {"a"=>["a", "b"], "b"=>"c"} to_s  should be == {/a*,b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{/a*,b}"] operator ; prefix pattern "{;a:3}/bar"  string should be immune to external change  should match ";a=foo/bar"  should match ";a=fo/bar"  should match ";a=f/bar"  should not match ";a=fooo/bar" to_s  should be == {;a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{;a:3}/bar"] pattern "{;a:3}{b}"  string should be immune to external change  should match ";a=foobar" to_s  should be == {;a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{;a:3}{b}"] expand pattern "{;a*}"  string should be immune to external change  should match ";a=1"  should match ";a=1;a=2"  should match ";a=1;a=2;a=3"  should not match ";a=1;a=2;b=3"  should not match ";a=1;a=2;a=3," to_s  should be == {;a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{;a*}"] pattern "{;a*,b}"  string should be immune to external change  should match ";a=1;b"  should match ";a=2;a=2;b=1"  should not match ";a;b;c"  should not match ";a;"  should be == {"a"=>["2", "2"], "b"=>nil} to_s  should be == {;a*,b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{;a*,b}"] operator ? prefix pattern "{?a:3}/bar"  string should be immune to external change  should match "?a=foo/bar"  should match "?a=fo/bar"  should match "?a=f/bar"  should not match "?a=fooo/bar" to_s  should be == {?a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{?a:3}/bar"] pattern "{?a:3}{b}"  string should be immune to external change  should match "?a=foobar" to_s  should be == {?a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{?a:3}{b}"] expand pattern "{?a*}"  string should be immune to external change  should match "?a=1"  should match "?a=1&a=2"  should match "?a=1&a=2&a=3"  should not match "?a=1&a=2&b=3"  should not match "?a=1&a=2&a=3," to_s  should be == {?a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{?a*}"] pattern "{?a*,b}"  string should be immune to external change  should match "?a=1&b"  should match "?a=2&a=2&b=1"  should not match "?a&b&c"  should not match "?a&"  should be == {"a"=>["2", "2"], "b"=>nil} to_s  should be == {?a*,b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{?a*,b}"] operator & prefix pattern "{&a:3}/bar"  string should be immune to external change  should match "&a=foo/bar"  should match "&a=fo/bar"  should match "&a=f/bar"  should not match "&a=fooo/bar" to_s  should be == {&a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{&a:3}/bar"] pattern "{&a:3}{b}"  string should be immune to external change  should match "&a=foobar" to_s  should be == {&a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{&a:3}{b}"] expand pattern "{&a*}"  string should be immune to external change  should match "&a=1"  should match "&a=1&a=2"  should match "&a=1&a=2&a=3"  should not match "&a=1&a=2&b=3"  should not match "&a=1&a=2&a=3," to_s  should be == {&a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{&a*}"] pattern "{&a*,b}"  string should be immune to external change  should match "&a=1&b"  should match "&a=2&a=2&b=1"  should not match "&a&b&c"  should not match "&a&"  should be == {"a"=>["2", "2"], "b"=>nil}  should be == {"a"=>["2", " "], "b"=>nil} to_s  should be == {&a*,b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{&a*,b}"] invalid syntax  unexpected closing bracket  missing closing bracket peeking peek_size  should be == 9  should be nil peek_match  should be == foo%20bar  should be nil peek_params  should be == [{"name"=>"foo "}, 9]  should be nil Mustermann::ToPattern String  should be a kind of Mustermann::Sinatra  should be a kind of Mustermann::Rails Regexp  should be a kind of Mustermann::Regular  should be a kind of Mustermann::Regular Symbol  should be a kind of Mustermann::Sinatra  should be a kind of Mustermann::Sinatra Array  should be a kind of Mustermann::Composite  should be a kind of Mustermann::Composite Mustermann::Pattern  should be ==  should be a kind of Mustermann::Sinatra custom class  should be a kind of Mustermann::Sinatra  should be a kind of Mustermann::Rails  should be a kind of Mustermann::Sinatra  should be a kind of Mustermann::Rails primitive delegate  should be a kind of Mustermann::Composite  should be a kind of Mustermann::Composite primitive subclass  should be a kind of Mustermann::Composite  should be a kind of Mustermann::Composite Finished in 1.45 seconds (files took 2.25 seconds to load) 4484 examples, 0 failures /usr/bin/ruby2.5 /usr/bin/gem2deb-test-runner ┌──────────────────────────────────────────────────────────────────────────────┐ │ Checking Rubygems dependency resolution on ruby2.5 │ └──────────────────────────────────────────────────────────────────────────────┘ fatal: Not a git repository (or any of the parent directories): .git fatal: Not a git repository (or any of the parent directories): .git fatal: Not a git repository (or any of the parent directories): .git GEM_PATH=debian/ruby-mustermann19/usr/share/rubygems-integration/all:/root/.gem/ruby/2.5.0:/var/lib/gems/2.5.0:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.5.0:/usr/share/rubygems-integration/2.5.0:/usr/share/rubygems-integration/all ruby2.5 -e gem\ \"mustermann19\" ┌──────────────────────────────────────────────────────────────────────────────┐ │ Run tests for ruby2.5 from debian/ruby-tests.rake │ └──────────────────────────────────────────────────────────────────────────────┘ RUBYLIB=/build/ruby-mustermann19-0.4.3+git20160621/debian/ruby-mustermann19/usr/lib/ruby/vendor_ruby:. GEM_PATH=debian/ruby-mustermann19/usr/share/rubygems-integration/all:/root/.gem/ruby/2.5.0:/var/lib/gems/2.5.0:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.5.0:/usr/share/rubygems-integration/2.5.0:/usr/share/rubygems-integration/all ruby2.5 -S rake -f debian/ruby-tests.rake /usr/bin/ruby2.5 /usr/bin/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1226: warning: constant ::Fixnum is deprecated /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1226: warning: constant ::Fixnum is deprecated /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1226: warning: constant ::Fixnum is deprecated /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?': /\/(?:(?:(?:\(|%28))?)?/ /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?': /\A((?-mix:\/(?:(?:(?:\(|%28))?)?))/ /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?': /\A(?-mix:\/(?:(?:(?:\(|%28))?)?)\Z/ /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?': /\/(?:(?:(?:\(|%28)(?:\)|%29))?)?/ /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?': /\A((?-mix:\/(?:(?:(?:\(|%28)(?:\)|%29))?)?))/ /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?': /\A(?-mix:\/(?:(?:(?:\(|%28)(?:\)|%29))?)?)\Z/ /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/ast/compiler.rb:168: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:19: warning: regular expression has redundant nested repeat operator '?' /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann/regexp_based.rb:20: warning: regular expression has redundant nested repeat operator '?' Run options: exclude {:skip=>true} Mustermann::AST type  should be == char  should be == char min_size  should be == 1  should be == 0 Mustermann::Composite new  with no argument  with one argument | ==  should be == (sinatra:"/foo/:name" | sinatra:"/:first/:second")  should be == (sinatra:"/foo/:name" | sinatra:"/:first/:second")  should not be == /foo/:name  should not be == (sinatra:"/foo/:name" & sinatra:"/:first/:second") ===  should be === /foo/bar  should be === /fox/bar  should not be === /foo params  should be == {"name"=>"bar"}  should be == {"first"=>"fox", "second"=>"bar"}  should be nil ===  should match "/foo/bar"  should match "/fox/bar"  should not match "/foo" expand  should respond to #expand  should be == /foo/bar  should be == /fox/bar without expandable patterns  should not respond to #expand  should raise NotImplementedError to_templates  should respond to #to_templates  should generate templates "/foo/{name}" and "/{first}/{second}" without patterns implementing to_templates  should not respond to #to_templates  should raise NotImplementedError & ==  should be == (sinatra:"/foo/:name" & sinatra:"/:first/:second")  should be == (sinatra:"/foo/:name" & sinatra:"/:first/:second")  should not be == /foo/:name  should not be == (sinatra:"/foo/:name" | sinatra:"/:first/:second") ===  should be === /foo/bar  should not be === /fox/bar  should not be === /foo params  should be == {"name"=>"bar"}  should be nil  should be nil match  should match "/foo/bar"  should not match "/fox/bar"  should not match "/foo" expand  should not respond to #expand  should raise NotImplementedError ^ ==  should be == (sinatra:"/foo/:name" ^ sinatra:"/:first/:second")  should not be == (sinatra:"/foo/:name" | sinatra:"/:first/:second")  should not be == /foo/:name  should not be == (sinatra:"/foo/:name" & sinatra:"/:first/:second") ===  should not be === /foo/bar  should be === /fox/bar  should not be === /foo params  should be nil  should be == {"first"=>"fox", "second"=>"bar"}  should be nil match  should not match "/foo/bar"  should match "/fox/bar"  should not match "/foo" expand  should not respond to #expand  should raise NotImplementedError inspect  should include "(sinatra:\"x\" | rails:\"x\")"  should include "(sinatra:\"x\" ^ rails:\"x\")"  should include "(sinatra:\"x\" | rails:\"x\" | identity:\"x\")"  should include "(sinatra:\"x\" | (rails:\"x\" & identity:\"x\"))" Mustermann::Expander  expands a pattern  expands multiple patterns  supports setting pattern options  supports combining different pattern styles  ignores nil values  supports splat  supports multiple splats  supports identity patterns additional_values illegal value  should raise ArgumentError  should raise ArgumentError raise  should be == /a  should raise Mustermann::ExpandError  should raise Mustermann::ExpandError ignore  should be == /a  should be == /a  should raise Mustermann::ExpandError append  should be == /a  should be == /a?b=b  should raise Mustermann::ExpandError cast  should be == /FOOBAR  should be == /FOO  should be == /FOO/BAR  should be == /FOO/bar  should be == /FOO/BAR  should be == /foo/b 42  should be == /FOO/bar ==  should be == #  should not be == #  should be == #  should not be == # hash  should be == 847704335920895866  should not be == -4930405209068873474  should be == 775498471417301077  should not be == 847704335920895866 eql?  should be eql #], @api_expander=#<...={[]=>[[], "/foo", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>  should not be eql #], @api_expander=#<...={[]=>[[], "/bar", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>  should be eql #], @api_expander=#[[], "/foo", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>  should not be eql #], @api_expander=#<...={[]=>[[], "/foo", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]> equal?  should not be equal #], @api_expander=#<...={[]=>[[], "/foo", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>  should not be equal #], @api_expander=#<...={[]=>[[], "/bar", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>  should not be equal #], @api_expander=#[[], "/foo", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>  should not be equal #], @api_expander=#<...={[]=>[[], "/foo", {}]}>, @additional_values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]> Mustermann::Express pattern ""  string should be immune to external change  should match ""  should not match "/"  should expand  should not expand [:a, 1]  should generate template ""  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo"  should expand  should not expand [:a, 1] to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar"  should expand  should not expand [:a, 1] to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should expand  should not expand [:a, 1] to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/:foo"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be nil  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should not expand  should generate template "/{foo}" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo+"  string should be immune to external change  should not match "/"  should match "/foo"  should match "/foo/bar"  should expand  should expand [:foo, nil]  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should generate template "/{+foo}" to_s  should be == /:foo+ inspect  should be == # names  should be a kind of Array pattern "/:foo?"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should match "/"  should not match "/foo?"  should not match "/foo/bar"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be == {"foo"=>nil}  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should expand  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should generate template "/{foo}"  should generate template "/" to_s  should be == /:foo? inspect  should be == # names  should be a kind of Array pattern "/:foo*"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should expand  should expand [:foo, nil]  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should generate template "/{+foo}" to_s  should be == /:foo* inspect  should be == # names  should be a kind of Array pattern "/:foo(.*)"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should generate template "/{foo}" to_s  should be == /:foo(.*) inspect  should be == # names  should be a kind of Array pattern "/:foo(\\d+)"  string should be immune to external change  should not match "/"  should not match "/foo"  should match "/15"  should generate template "/{foo}" to_s  should be == /:foo(\d+) inspect  should be == # names  should be a kind of Array pattern "/:foo(\\d+|bar)"  string should be immune to external change  should not match "/"  should not match "/foo"  should match "/15"  should match "/bar"  should generate template "/{foo}" to_s  should be == /:foo(\d+|bar) inspect  should be == # names  should be a kind of Array pattern "/:foo(\\))"  string should be immune to external change  should not match "/"  should not match "/foo"  should match "/)"  should generate template "/{foo}" to_s  should be == /:foo(\)) inspect  should be == # names  should be a kind of Array pattern "/:foo(prefix(\\d+|bar))"  string should be immune to external change  should not match "/prefix"  should not match "/prefixfoo"  should match "/prefix15"  should match "/prefixbar"  should generate template "/{foo}" to_s  should be == /:foo(prefix(\d+|bar)) inspect  should be == # names  should be a kind of Array pattern "/(.+)"  string should be immune to external change  should not match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+splat}" to_s  should be == /(.+) inspect  should be == # names  should be a kind of Array pattern "/(foo(a|b))"  string should be immune to external change  should not match "/"  should match "/fooa"  should match "/foob"  should generate template "/{+splat}" to_s  should be == /(foo(a|b)) inspect  should be == # names  should be a kind of Array invalid syntax  unexpected closing parenthesis  missing closing parenthesis  unexpected ?  unexpected * Mustermann::Extension /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1226: warning: constant ::Fixnum is deprecated  sets up the extension uses Sinatra-style patterns by default /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1068: warning: constant ::Fixnum is deprecated /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1069: warning: constant ::Fixnum is deprecated /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1068: warning: constant ::Fixnum is deprecated  should be == foo /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1226: warning: constant ::Fixnum is deprecated /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1069: warning: constant ::Fixnum is deprecated  should be == foo.  should be == foo  should be == a b except  should be ok  should not be ok capture global  should be == foo.bar  should be == foo route local  should be ok  should not be ok global and route local global is a hash  should be == a  should be == a  should be == b  should be == c global is not a hash  should be ok  should not be ok  should be ok  should be == 20  should be == 42  should be == ok pattern except  should be ok  should not be ok capture route local  should be ok  should not be ok global and route local global is a hash  should be == a  should be == a  should be == b  should be == c global is not a hash  should be ok  should not be ok  should be ok  should be == 20  should be == 42  should be == ok greedy default  should be == foo  should be == foo.bar enabled  should be == foo  should be == foo.bar disabled  should be == foo  should be == foo global  should be == foo  should be == foo space_matches_plus default  should be ok  should be ok enabled  should be ok  should be ok disabled  should be ok  should not be ok global  should be ok  should not be ok uri_decode default  should be ok  should be ok enabled  should be ok  should be ok disabled  should be ok  should not be ok global  should be ok  should not be ok type identity  should be ok  should not be ok rails  should be == foo  should be == foo.  should be == foo  should be == a b simple  should be ok  should not be ok simple  should be ok  should not be ok  should be == ["a"] "png"  should be == ["a", "b"] "png" works with filters  should be == auth required  should be == please log in Mustermann::Flask pattern ""  string should be immune to external change  should match ""  should not match "/"  should expand  should not expand [:a, 1]  should generate template ""  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo"  should expand  should not expand [:a, 1] to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar"  should expand  should not expand [:a, 1] to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should expand  should not expand [:a, 1] to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be nil  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should not expand  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be nil  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should not expand  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/f"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/f"  should match "/fo"  should match "/foo"  should match "/bar"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/42"  should not match "/1.0"  should not match "/.5"  should not match "/foo"  should not match "/bar"  should not match "/foo.bar"  should not match "/%0Afoo"  should not match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>42}  should expand [:foo, 12]  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/42"  should not match "/1.0"  should not match "/.5"  should not match "/foo"  should not match "/bar"  should not match "/foo.bar"  should not match "/%0Afoo"  should not match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>42}  should expand [:foo, 12]  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo,bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo,bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo,bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should be == {"foo"=>42}  should be == {"foo"=>50}  should be == {"foo"=>5} to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should be == {"foo"=>42.5}  should be == {"foo"=>50.5}  should be == {"foo"=>5.0} to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "///"  string should be immune to external change  should match "/foo/42/42"  should match "/foo/1.0/1"  should match "/foo/.5/0"  should not match "/foo/1/1.0"  should not match "/foo/1.0/1.0"  should generate template "/{prefix}/{foo}/{bar}"  should be == {"prefix"=>"foo", "foo"=>1.0, "bar"=>1} to_s  should be == /// inspect  should be == #//"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should expand  should expand [:foo, nil]  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should generate template "/{+foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/" with options {:converters=>{:foo=>#>}}  string should be immune to external change  should match "/foo"  should be == {"bar"=>"FOO"} to_s  should be == / inspect  should be == #"> names  should be a kind of Array invalid syntax  unexpected end of capture  missing end of capture  unknown converter  broken argument synax  missing )  missing "" FlaskSubclass pattern ""  string should be immune to external change  should match ""  should not match "/"  should expand  should not expand [:a, 1]  should generate template ""  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo"  should expand  should not expand [:a, 1] to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar"  should expand  should not expand [:a, 1] to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should expand  should not expand [:a, 1] to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be nil  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should not expand  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be nil  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should not expand  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/f"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/f"  should match "/fo"  should match "/foo"  should match "/bar"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/42"  should not match "/1.0"  should not match "/.5"  should not match "/foo"  should not match "/bar"  should not match "/foo.bar"  should not match "/%0Afoo"  should not match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>42}  should expand [:foo, 12]  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/42"  should not match "/1.0"  should not match "/.5"  should not match "/foo"  should not match "/bar"  should not match "/foo.bar"  should not match "/%0Afoo"  should not match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>42}  should expand [:foo, 12]  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo,bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo,bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo,bar"  should not match "/f"  should not match "/fo"  should not match "/fooo"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should not match "/baz"  should generate template "/{foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should be == {"foo"=>42}  should be == {"foo"=>50}  should be == {"foo"=>5} to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should be == {"foo"=>42.5}  should be == {"foo"=>50.5}  should be == {"foo"=>5.0} to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "///"  string should be immune to external change  should match "/foo/42/42"  should match "/foo/1.0/1"  should match "/foo/.5/0"  should not match "/foo/1/1.0"  should not match "/foo/1.0/1.0"  should generate template "/{prefix}/{foo}/{bar}"  should be == {"prefix"=>"foo", "foo"=>1.0, "bar"=>1} to_s  should be == /// inspect  should be == #//"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should expand  should expand [:foo, nil]  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should generate template "/{+foo}" to_s  should be == / inspect  should be == #"> names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/foo"  should generate template "/{bar}"  should raise Mustermann::ParseError with "unexpected converter \"foo\" while parsing \"/\"" to_s  should be == / inspect  should be == #"> names  should be a kind of Array invalid syntax  unexpected end of capture  missing end of capture  unknown converter  broken argument synax  missing )  missing "" Mustermann::Grape pattern ""  string should be immune to external change  should match ""  should not match "/"  should generate template ""  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo" to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar" to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/foo\\/bar"  string should be immune to external change  should match "/foo/bar"  should match "/foo%2Fbar"  should match "/foo%2fbar" to_s  should be == /foo\/bar inspect  should be == # names  should be a kind of Array pattern "/:foo"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo.bar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/f\u00F6\u00F6"  string should be immune to external change  should match "/f%C3%B6%C3%B6" to_s  should be == /föö inspect  should be == # names  should be a kind of Array pattern "/:foo/:bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo.bar/bar.foo"  should not match "/user@example.com/name"  should not match "/10.1/te.st"  should not match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should be == {"foo"=>"bar", "bar"=>"foo"}  should be nil  should generate template "/{foo}/{bar}" to_s  should be == /:foo/:bar inspect  should be == # names  should be a kind of Array pattern "/{foo}/{bar}"  string should be immune to external change  should match "/foo/bar"  should match "/foo.bar/bar.foo"  should match "/user@example.com/name"  should match "/10.1/te.st"  should match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should be == {"foo"=>"bar", "bar"=>"foo"}  should be nil  should generate template "/{foo}/{bar}" to_s  should be == /{foo}/{bar} inspect  should be == # names  should be a kind of Array pattern "/hello/:person"  string should be immune to external change  should match "/hello/Frank"  should generate template "/hello/{person}" to_s  should be == /hello/:person inspect  should be == # names  should be a kind of Array pattern "/hello/{person}"  string should be immune to external change  should match "/hello/Frank"  should generate template "/hello/{person}" to_s  should be == /hello/{person} inspect  should be == # names  should be a kind of Array pattern "/?:foo?/?:bar?"  string should be immune to external change  should match "/hello/world"  should match "/hello"  should match "/"  should match ""  should expand [:foo, "hello"]  should expand [:foo, "hello"] and [:bar, "world"]  should expand [:bar, "world"]  should expand  should not expand [:baz, ""]  should not match "/hello/world/"  should generate templates "", "/", "//", "//{bar}", "/{bar}", "/{foo}", "/{foo}/", "/{foo}/{bar}", "/{foo}{bar}", "{bar}", "{foo}", "{foo}/", "{foo}/{bar}", and "{foo}{bar}" to_s  should be == /?:foo?/?:bar? inspect  should be == # names  should be a kind of Array pattern "/:foo_bar"  string should be immune to external change  should match "/hello"  should generate template "/{foo_bar}" to_s  should be == /:foo bar inspect  should be == # names  should be a kind of Array pattern "/{foo.bar}"  string should be immune to external change  should match "/hello"  should generate template "/{foo.bar}" to_s  should be == /{foo.bar} inspect  should be == # names  should be a kind of Array pattern "/*"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+splat}"  should be == {"splat"=>["foo"]} to_s  should be == /* inspect  should be == # names  should be a kind of Array pattern "/{+splat}"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+splat}"  should be == {"splat"=>["foo"]} to_s  should be == /{+splat} inspect  should be == # names  should be a kind of Array pattern "/*foo"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+foo}"  should be == {"foo"=>"foo"}  should be == {"foo"=>"foo/bar"} to_s  should be == /*foo inspect  should be == # names  should be a kind of Array pattern "/{+foo}"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+foo}"  should be == {"foo"=>"foo"}  should be == {"foo"=>"foo/bar"} to_s  should be == /{+foo} inspect  should be == # names  should be a kind of Array pattern "/*foo/*bar"  string should be immune to external change  should match "/foo/bar"  should generate template "/{+foo}/{+bar}" to_s  should be == /*foo/*bar inspect  should be == # names  should be a kind of Array pattern "/{+foo}/{+bar}"  string should be immune to external change  should match "/foo/bar"  should generate template "/{+foo}/{+bar}" to_s  should be == /{+foo}/{+bar} inspect  should be == # names  should be a kind of Array pattern "/:foo/*"  string should be immune to external change  should match "/foo/bar/baz"  should match "/foo/"  should match "/h%20w/h%20a%20y"  should not match "/foo"  should generate template "/{foo}/{+splat}"  should be == {"splat"=>["foo"], "foo"=>"bar"}  should be == {"splat"=>["foo/f o"], "foo"=>"bar"} to_s  should be == /:foo/* inspect  should be == # names  should be a kind of Array pattern "/{foo}/*"  string should be immune to external change  should match "/foo/bar/baz"  should match "/foo/"  should match "/h%20w/h%20a%20y"  should not match "/foo"  should generate template "/{foo}/{+splat}"  should be == {"splat"=>["foo"], "foo"=>"bar"}  should be == {"splat"=>["foo/f o"], "foo"=>"bar"} to_s  should be == /{foo}/* inspect  should be == # names  should be a kind of Array pattern "/test$/"  string should be immune to external change  should match "/test$/" to_s  should be == /test$/ inspect  should be == # names  should be a kind of Array pattern "/te+st/"  string should be immune to external change  should match "/te+st/"  should not match "/test/"  should not match "/teest/" to_s  should be == /te+st/ inspect  should be == # names  should be a kind of Array pattern "/path with spaces"  string should be immune to external change  should match "/path%20with%20spaces"  should match "/path%2Bwith%2Bspaces"  should match "/path+with+spaces"  should generate template "/path%20with%20spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/foo&bar"  string should be immune to external change  should match "/foo&bar" to_s  should be == /foo&bar inspect  should be == # names  should be a kind of Array pattern "/foo\\{bar"  string should be immune to external change  should match "/foo%7Bbar" to_s  should be == /foo\{bar inspect  should be == # names  should be a kind of Array pattern "/*/:foo/*/*"  string should be immune to external change  should match "/bar/foo/bling/baz/boom"  should capture all splat parts  should map to proper params to_s  should be == /*/:foo/*/* inspect  should be == # names  should be a kind of Array pattern "/{+splat}/{foo}/{+splat}/{+splat}"  string should be immune to external change  should match "/bar/foo/bling/baz/boom"  should capture all splat parts  should map to proper params to_s  should be == /{+splat}/{foo}/{+splat}/{+splat} inspect  should be == # names  should be a kind of Array pattern "/test.bar"  string should be immune to external change  should match "/test.bar"  should not match "/test0bar" to_s  should be == /test.bar inspect  should be == # names  should be a kind of Array pattern "/:file.:ext"  string should be immune to external change  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony%E6%AD%A3%2Ejpg"  should match "/pony%e6%ad%a3%2ejpg"  should match "/pony\u6B63%2Ejpg"  should match "/pony\u6B63%2ejpg"  should not match "/pony\u6B63..jpg"  should not match "/.jpg" to_s  should be == /:file.:ext inspect  should be == # names  should be a kind of Array pattern "/(:a)x?"  string should be immune to external change  should match "/a"  should match "/xa"  should match "/axa"  should generate template "/{a}x"  should generate template "/{a}" to_s  should be == /(:a)x? inspect  should be == # names  should be a kind of Array pattern "/:user(@:host)?"  string should be immune to external change  should match "/foo@bar"  should not match "/foo.foo@bar"  should not match "/foo@bar.bar"  should generate template "/{user}"  should generate template "/{user}@{host}" to_s  should be == /:user(@:host)? inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)?"  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should not match "/pony.png.jpg"  should not match "/pony."  should not match "/.jpg"  should generate template "/{file}"  should generate template "/{file}.{ext}"  should not generate template "/{file}." to_s  should be == /:file(.:ext)? inspect  should be == # names  should be a kind of Array pattern "/:id/test.bar"  string should be immune to external change  should match "/3/test.bar"  should match "/2/test.bar"  should match "/2E/test.bar"  should match "/2e/test.bar"  should match "/%2E/test.bar" to_s  should be == /:id/test.bar inspect  should be == # names  should be a kind of Array pattern "/10/:id"  string should be immune to external change  should match "/10/test"  should not match "/10/te.st" to_s  should be == /10/:id inspect  should be == # names  should be a kind of Array pattern "/10.1/:id"  string should be immune to external change  should match "/10.1/test"  should not match "/10.1/te.st" to_s  should be == /10.1/:id inspect  should be == # names  should be a kind of Array pattern "/:foo.:bar/:id"  string should be immune to external change  should not match "/10.1/te.st"  should not match "/10.1.2/te.st" to_s  should be == /:foo.:bar/:id inspect  should be == # names  should be a kind of Array pattern "/:a/:b.?:c?"  string should be immune to external change  should match "/a/b"  should match "/a/b.c"  should not match "/a.b/c"  should not match "/a.b/c.d"  should not match "/a.b/c.d/e" to_s  should be == /:a/:b.?:c? inspect  should be == # names  should be a kind of Array pattern "/:a(foo:b)?"  string should be immune to external change  should match "/barfoobar"  should match "/barfoobarfoobar"  should match "/bar"  should not match "/" to_s  should be == /:a(foo:b)? inspect  should be == # names  should be a kind of Array pattern "/foo?"  string should be immune to external change  should match "/fo"  should match "/foo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo" to_s  should be == /foo? inspect  should be == # names  should be a kind of Array pattern "/foo\\?"  string should be immune to external change  should match "/foo?"  should not match "/foo\\?"  should not match "/fo"  should not match "/foo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo" to_s  should be == /foo\? inspect  should be == # names  should be a kind of Array pattern "/foo\\\\?"  string should be immune to external change  should match "/foo%5c"  should match "/foo"  should not match "/foo\\?"  should not match "/fo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo" to_s  should be == /foo\\? inspect  should be == # names  should be a kind of Array pattern "/\\("  string should be immune to external change  should match "/(" to_s  should be == /\( inspect  should be == # names  should be a kind of Array pattern "/\\(?"  string should be immune to external change  should match "/("  should match "/" to_s  should be == /\(? inspect  should be == # names  should be a kind of Array pattern "/(\\()?"  string should be immune to external change  should match "/("  should match "/" to_s  should be == /(\()? inspect  should be == # names  should be a kind of Array pattern "/(\\(\\))?"  string should be immune to external change  should match "/"  should match "/()"  should not match "/(" to_s  should be == /(\(\))? inspect  should be == # names  should be a kind of Array pattern "/\\(\\)?"  string should be immune to external change  should match "/("  should match "/()"  should not match "/" to_s  should be == /\(\)? inspect  should be == # names  should be a kind of Array pattern "/\\*"  string should be immune to external change  should match "/*"  should not match "/a" to_s  should be == /\* inspect  should be == # names  should be a kind of Array pattern "/\\*/*"  string should be immune to external change  should match "/*/b/c"  should not match "/a/b/c" to_s  should be == /\*/* inspect  should be == # names  should be a kind of Array pattern "/\\:foo"  string should be immune to external change  should match "/:foo"  should not match "/foo" to_s  should be == /\:foo inspect  should be == # names  should be a kind of Array pattern "/:fOO"  string should be immune to external change  should match "/a" to_s  should be == /:fOO inspect  should be == # names  should be a kind of Array pattern "/:_X"  string should be immune to external change  should match "/a" to_s  should be == /: X inspect  should be == # names  should be a kind of Array pattern "/:f00"  string should be immune to external change  should match "/a" to_s  should be == /:f00 inspect  should be == # names  should be a kind of Array pattern "/:foo(/:bar)?/:baz?"  string should be immune to external change  should match "/foo/bar/baz" to_s  should be == /:foo(/:bar)?/:baz? inspect  should be == # names  should be a kind of Array pattern "/(foo|bar)"  string should be immune to external change  should match "/foo"  should match "/bar" to_s  should be == /(foo|bar) inspect  should be == # names  should be a kind of Array pattern "/(foo\\|bar)"  string should be immune to external change  should match "/foo%7Cbar"  should generate template "/foo%7Cbar"  should not match "/foo"  should not match "/bar"  should not generate template "/foo"  should not generate template "/bar" to_s  should be == /(foo\|bar) inspect  should be == # names  should be a kind of Array pattern "/(:a/:b|:c)"  string should be immune to external change  should match "/foo"  should match "/foo/bar"  should expand [:a, "foo"] and [:b, "bar"]  should expand [:c, "foo"]  should not expand [:a, "foo"], [:b, "bar"], and [:c, "baz"] to_s  should be == /(:a/:b|:c) inspect  should be == # names  should be a kind of Array pattern "/:a/:b|:c"  string should be immune to external change  should match "foo"  should match "/foo/bar"  should generate template "/{a}/{b}"  should generate template "{c}"  should expand [:a, "foo"] and [:b, "bar"]  should expand [:c, "foo"]  should not expand [:a, "foo"], [:b, "bar"], and [:c, "baz"] to_s  should be == /:a/:b|:c inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>/\d+/}  string should be immune to external change  should match "/1"  should match "/123"  should not match "/"  should not match "/foo" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>/\d+/}  string should be immune to external change  should match "/1"  should match "/123"  should not match "/"  should not match "/foo" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>"1"}  string should be immune to external change  should match "/1"  should not match "/"  should not match "/foo"  should not match "/123" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>"a.b"}  string should be immune to external change  should match "/a.b"  should match "/a%2Eb"  should match "/a%2eb"  should not match "/ab"  should not match "/afb"  should not match "/a1b"  should not match "/a.bc" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo(/:bar)?" with options {:capture=>:alpha}  string should be immune to external change  should match "/abc"  should match "/a/b"  should match "/a"  should not match "/1/2"  should not match "/a/2"  should not match "/1/b"  should not match "/1"  should not match "/1/"  should not match "/a/"  should not match "//a" to_s  should be == /:foo(/:bar)? inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>["foo", "bar", /\d+/]}  string should be immune to external change  should match "/1"  should match "/123"  should match "/foo"  should match "/bar"  should not match "/"  should not match "/baz"  should not match "/foo1" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo:bar:baz" with options {:capture=>{:foo=>:alpha, :bar=>/\d+/}}  string should be immune to external change  should match "/ab123xy-1"  should match "/ab123"  should not match "/123abcxy-1"  should not match "/abcxy-1"  should not match "/abc1" to_s  should be == /:foo:bar:baz inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>{:foo=>["foo", "bar", /\d+/]}}  string should be immune to external change  should match "/1"  should match "/123"  should match "/foo"  should match "/bar"  should not match "/"  should not match "/baz"  should not match "/foo1" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)?" with options {:capture=>{:ext=>["jpg", "png"]}}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony.png"  should match "/pony%2Epng"  should match "/pony%2epng"  should not match "/pony.png.jpg"  should not match "/pony.jpg.png"  should not match "/pony.gif"  should not match "/pony."  should not match ".jpg" to_s  should be == /:file(.:ext)? inspect  should be == # names  should be a kind of Array pattern "/:file:ext?" with options {:capture=>{:ext=>[".jpg", ".png", ".tar.gz"]}}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony.png"  should match "/pony.tar.gz"  should not match "/pony.png.jpg"  should not match "/pony.jpg.png"  should not match "/pony.gif"  should not match "/pony."  should not match "/.jpg" to_s  should be == /:file:ext? inspect  should be == # names  should be a kind of Array pattern "/:a(@:b)?" with options {:capture=>{:b=>/\d+/}}  string should be immune to external change  should match "/a"  should match "/a@1"  should match "/a@b"  should match "/a@1@2" to_s  should be == /:a(@:b)? inspect  should be == # names  should be a kind of Array pattern "/(:a)b?" with options {:greedy=>false}  string should be immune to external change  should match "/ab" to_s  should be == /(:a)b? inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)?" with options {:greedy=>false}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should not match "/pony.png.jpg" to_s  should be == /:file(.:ext)? inspect  should be == # names  should be a kind of Array pattern "/auth/*" with options {:except=>"/auth/login"}  string should be immune to external change  should match "/auth/admin"  should match "/auth/foobar"  should not match "/auth/login" to_s  should be == /auth/* inspect  should be == # names  should be a kind of Array pattern "/:foo/:bar" with options {:except=>"/:bar/20"}  string should be immune to external change  should match "/foo/bar"  should not match "/20/20" to_s  should be == /:foo/:bar inspect  should be == # names  should be a kind of Array pattern "/foo?" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo"  should match "/fo"  should not match "/foo?" to_s  should be == /foo? inspect  should be == # names  should be a kind of Array pattern "/foo/bar" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:uri_decode=>false}  string should be immune to external change  should match "/path with spaces"  should not match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:space_matches_plus=>false}  string should be immune to external change  should match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array invalid syntax  unexpected closing parenthesis  missing closing parenthesis  missing unescaped closing parenthesis  ? at beginning of route  double ?  dangling escape invalid capture names  empty name  named splat  named captures  with capital letter  with integer  same name twice Regexp compatibility ===  non-matching  matching =~  non-matching  matching String#=~  non-matching  matching to_regexp  empty pattern Regexp.try_convert  empty pattern Proc compatibility to_proc  should be a kind of Proc  non-matching  matching peeking peek_size  should be == 7  should be == 9  should be nil peek_match  should be == foo bar  should be == foo%20bar  should be nil peek_params  should be == [{"name"=>"foo bar"}, 7]  should be == [{"name"=>"foo bar"}, 9]  should be nil Mustermann::Identity pattern ""  string should be immune to external change  should match ""  should not match "/"  should respond to #expand  should respond to #to_templates  should generate template ""  should expand  should expand :ignore and {:a=>10}  should expand :append and {:a=>10}  should not expand :raise and {:a=>10}  should not expand [:a, 10]  should be == # to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo"  should be == {}  should be nil  should generate template "/"  should expand to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar" to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should match "/foo%2Fbar"  should match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/:foo"  string should be immune to external change  should match "/:foo"  should match "/%3Afoo"  should not match "/foo"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/:foo"  should expand to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/f\u00F6\u00F6"  string should be immune to external change  should match "/f%C3%B6%C3%B6" to_s  should be == /föö inspect  should be == # names  should be a kind of Array pattern "/test$/"  string should be immune to external change  should match "/test$/" to_s  should be == /test$/ inspect  should be == # names  should be a kind of Array pattern "/te+st/"  string should be immune to external change  should match "/te+st/"  should not match "/test/"  should not match "/teest/" to_s  should be == /te+st/ inspect  should be == # names  should be a kind of Array pattern "/path with spaces"  string should be immune to external change  should match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces"  should generate template "/path%20with%20spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/foo&bar"  string should be immune to external change  should match "/foo&bar" to_s  should be == /foo&bar inspect  should be == # names  should be a kind of Array pattern "/test.bar"  string should be immune to external change  should match "/test.bar"  should not match "/test0bar" to_s  should be == /test.bar inspect  should be == # names  should be a kind of Array pattern "/foo/bar" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:uri_decode=>false}  string should be immune to external change  should not match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array peeking peek_size  should be == 7  should be == 9  should be nil peek_match  should be == foo bar  should be == foo%20bar  should be nil peek_params  should be == [{}, 7]  should be == [{}, 9]  should be nil Mustermann::Mapper initialize accepts a block with no arguments, using the return value  should be == /bar  should be == /fox to_h  should be == {#=>#], @api expander=#[[], "/bar", {}]}>, @additional values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>} accepts a block with argument, passes instance to it  should be == /bar  should be == /fox to_h  should be == {#=>#], @api expander=#[[], "/bar", {}]}>, @additional values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>} accepts mappings followed by options  should be == /bar  should be == /fox to_h  should be == {#=>#], @api expander=#[[], "/bar", {}]}>, @additional values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>} accepts options followed by mappings  should be == /bar  should be == /fox to_h  should be == {#=>#], @api expander=#[[], "/bar", {}]}>, @additional values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>} allows specifying type  should be == /bar  should be == /fox to_h  should be == {#=>#], @api expander=#[[], "/bar", {}]}>, @additional values=:raise, @options={}, @caster=[Mustermann::Caster::Nil]>} convert it maps params  should be == /foo.html  should be == /foo/bar it supports named splats  should be == /foo.html  should be == /foo/bar.html can map from patterns  should be == /foo.html  should be == /foo/bar can map to patterns  should be == /foo.html  should be == /foo/bar can map to expanders  should be == /foo.html  should be == /foo/bar can map to array  should be == /foo.html  should be == /foo.x  should be == /foo.x  should be == /foo/bar Mustermann new string argument  should be a kind of Mustermann::Sinatra  should be a kind of Mustermann::Identity  should be a kind of Mustermann::Rails  should be a kind of Mustermann::Shell  should be a kind of Mustermann::Sinatra  should be a kind of Mustermann::Simple  should be a kind of Mustermann::Template  should raise ArgumentError with "unsupported option :foo for Mustermann::Sinatra"  should raise ArgumentError with message matching /unsupported type :ast/ pattern argument  should be ==  should be a kind of Mustermann::Sinatra regexp argument  should be a kind of Mustermann::Regular  should be a kind of Mustermann::Regular argument implementing #to_pattern  should be a kind of Mustermann::Sinatra  should be a kind of Mustermann::Rails  should be == foo multiple arguments  should be a kind of Mustermann::Composite  should be a kind of Mustermann::Sinatra  should be == |  should be == &  should be a kind of Mustermann::Composite invalid arguments  raise a TypeError for unsupported types (FAILED - 1) []  should be == Mustermann::Identity  should be == Mustermann::Rails  should be == Mustermann::Shell  should be == Mustermann::Sinatra  should be == Mustermann::Simple  should be == Mustermann::Template  should raise ArgumentError with message matching /unsupported type :ast/  should raise ArgumentError with "unsupported type :expander" extend_object special behavior for Sinatra only  should be a kind of Mustermann  should not be a kind of Mustermann::Extension  should be a kind of Mustermann  should not be a kind of Mustermann::Extension /usr/lib/ruby/vendor_ruby/sinatra/base.rb:1226: warning: constant ::Fixnum is deprecated  should not be a kind of Mustermann  should be a kind of Mustermann::Extension ===  should be === Mustermann::Pattern ===  raises a NotImplementedError when used directly initialize  raises an ArgumentError for unknown options  does not complain about unknown options if ignore_unknown_options is enabled respond_to?  should not respond to #expand  should not respond to #to_templates  should raise NotImplementedError  should raise NotImplementedError ==  should be == /foo  should not be == /bar  should be == /foo  should not be == /foo eql?  should be eql #  should not be eql #  should be eql #  should not be eql # equal?  should be equal #  should not be equal #  should be equal #  should not be equal # Mustermann::Pyramid pattern ""  string should be immune to external change  should match ""  should not match "/"  should expand  should not expand [:a, 1]  should generate template ""  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo"  should expand  should not expand [:a, 1] to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar"  should expand  should not expand [:a, 1] to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should expand  should not expand [:a, 1] to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/{foo}"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be nil  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should not expand  should generate template "/{foo}" to_s  should be == /{foo} inspect  should be == # names  should be a kind of Array pattern "/*foo"  string should be immune to external change  should match "/foo"  should match "/foo/bar"  should expand  should expand [:foo, nil]  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should be == {"foo"=>["foo", "bar"]}  should generate template "/{+foo}" to_s  should be == /*foo inspect  should be == # names  should be a kind of Array pattern "/{foo:.*}"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should be == {"foo"=>"foo/bar"}  should generate template "/{foo}" to_s  should be == /{foo:.*} inspect  should be == # names  should be a kind of Array Mustermann::Rails pattern ""  string should be immune to external change  should match ""  should not match "/"  should expand  should not expand [:a, 1]  should generate template ""  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo"  should expand  should not expand [:a, 1] to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar"  should expand  should not expand [:a, 1] to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should expand  should not expand [:a, 1] to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/:foo"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should be == {"foo"=>"foo"}  should be == {"foo"=>"f o"}  should be nil  should expand [:foo, "bar"]  should expand [:foo, "b r"]  should expand [:foo, "foo/bar"]  should not expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:bar, "bar"]  should not expand  should generate template "/{foo}" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/f\u00F6\u00F6"  string should be immune to external change  should match "/f%C3%B6%C3%B6"  should expand  should not expand [:a, 1] to_s  should be == /föö inspect  should be == # names  should be a kind of Array pattern "/:foo/:bar"  string should be immune to external change  should match "/foo/bar"  should match "/foo.bar/bar.foo"  should match "/user@example.com/name"  should match "/10.1/te.st"  should match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should be == {"foo"=>"bar", "bar"=>"foo"}  should be nil  should expand [:foo, "foo"] and [:bar, "bar"]  should not expand [:foo, "foo"]  should not expand [:bar, "bar"]  should generate template "/{foo}/{bar}" to_s  should be == /:foo/:bar inspect  should be == # names  should be a kind of Array pattern "/hello/:person"  string should be immune to external change  should match "/hello/Frank"  should expand [:person, "Frank"]  should expand [:person, "Frank?"]  should generate template "/hello/{person}" to_s  should be == /hello/:person inspect  should be == # names  should be a kind of Array pattern "/?:foo?/?:bar?"  string should be immune to external change  should match "/?hello?/?world?"  should not match "/hello/world/"  should expand [:foo, "hello"] and [:bar, "world"]  should generate template "/?{foo}?/?{bar}?" to_s  should be == /?:foo?/?:bar? inspect  should be == # names  should be a kind of Array pattern "/:foo_bar"  string should be immune to external change  should match "/hello"  should expand [:foo_bar, "hello"]  should generate template "/{foo_bar}" to_s  should be == /:foo bar inspect  should be == # names  should be a kind of Array pattern "/*foo"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should expand  should expand [:foo, nil]  should expand [:foo, ""]  should expand [:foo, "foo"]  should expand [:foo, "foo/bar"]  should expand [:foo, "foo.bar"]  should generate template "/{+foo}" to_s  should be == /*foo inspect  should be == # names  should be a kind of Array pattern "/*splat"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+splat}" to_s  should be == /*splat inspect  should be == # names  should be a kind of Array pattern "/:foo/*bar"  string should be immune to external change  should match "/foo/bar/baz"  should match "/foo%2Fbar/baz"  should match "/foo/"  should match "/h%20w/h%20a%20y"  should not match "/foo"  should expand [:foo, "foo"]  should expand [:foo, "foo"] and [:bar, "bar"]  should expand [:foo, "foo"] and [:bar, "foo/bar"]  should expand [:foo, "foo/bar"] and [:bar, "bar"]  should generate template "/{foo}/{+bar}" to_s  should be == /:foo/*bar inspect  should be == # names  should be a kind of Array pattern "/test$/"  string should be immune to external change  should match "/test$/"  should expand to_s  should be == /test$/ inspect  should be == # names  should be a kind of Array pattern "/te+st/"  string should be immune to external change  should match "/te+st/"  should not match "/test/"  should not match "/teest/"  should expand to_s  should be == /te+st/ inspect  should be == # names  should be a kind of Array pattern "/path with spaces"  string should be immune to external change  should match "/path%20with%20spaces"  should match "/path%2Bwith%2Bspaces"  should match "/path+with+spaces"  should expand  should generate template "/path%20with%20spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/foo&bar"  string should be immune to external change  should match "/foo&bar" to_s  should be == /foo&bar inspect  should be == # names  should be a kind of Array pattern "/*a/:foo/*b/*c"  string should be immune to external change  should match "/bar/foo/bling/baz/boom"  should be == {"a"=>"bar", "foo"=>"foo", "b"=>"bling", "c"=>"baz/boom"}  should expand [:a, "bar"], [:foo, "foo"], [:b, "bling"], and [:c, "baz/boom"]  should generate template "/{+a}/{foo}/{+b}/{+c}" to_s  should be == /*a/:foo/*b/*c inspect  should be == # names  should be a kind of Array pattern "/test.bar"  string should be immune to external change  should match "/test.bar"  should not match "/test0bar" to_s  should be == /test.bar inspect  should be == # names  should be a kind of Array pattern "/:file.:ext"  string should be immune to external change  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony%E6%AD%A3%2Ejpg"  should match "/pony%e6%ad%a3%2ejpg"  should match "/pony\u6B63%2Ejpg"  should match "/pony\u6B63%2ejpg"  should match "/pony\u6B63..jpg"  should not match "/.jpg"  should expand [:file, "pony"] and [:ext, "jpg"] to_s  should be == /:file.:ext inspect  should be == # names  should be a kind of Array pattern "/:a(x)"  string should be immune to external change  should match "/a"  should match "/xa"  should match "/axa"  should match "/ax"  should match "/axax"  should match "/axaxx"  should expand [:a, "x"]  should expand [:a, "a"]  should generate template "/{a}x"  should generate template "/{a}" to_s  should be == /:a(x) inspect  should be == # names  should be a kind of Array pattern "/:user(@:host)"  string should be immune to external change  should match "/foo@bar"  should match "/foo.foo@bar"  should match "/foo@bar.bar"  should expand [:user, "foo"]  should expand [:user, "foo"] and [:host, "bar"]  should generate template "/{user}"  should generate template "/{user}@{host}" to_s  should be == /:user(@:host) inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)"  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony.png.jpg"  should match "/pony."  should not match "/.jpg"  should expand [:file, "pony"]  should expand [:file, "pony"] and [:ext, "jpg"]  should generate template "/{file}"  should generate template "/{file}.{ext}" to_s  should be == /:file(.:ext) inspect  should be == # names  should be a kind of Array pattern "/:id/test.bar"  string should be immune to external change  should match "/3/test.bar"  should match "/2/test.bar"  should match "/2E/test.bar"  should match "/2e/test.bar"  should match "/%2E/test.bar" to_s  should be == /:id/test.bar inspect  should be == # names  should be a kind of Array pattern "/10/:id"  string should be immune to external change  should match "/10/test"  should match "/10/te.st" to_s  should be == /10/:id inspect  should be == # names  should be a kind of Array pattern "/10.1/:id"  string should be immune to external change  should match "/10.1/test"  should match "/10.1/te.st" to_s  should be == /10.1/:id inspect  should be == # names  should be a kind of Array pattern "/:foo.:bar/:id"  string should be immune to external change  should match "/10.1/te.st"  should match "/10.1.2/te.st" to_s  should be == /:foo.:bar/:id inspect  should be == # names  should be a kind of Array pattern "/:a/:b(.)(:c)"  string should be immune to external change  should match "/a/b"  should match "/a/b.c"  should match "/a.b/c"  should match "/a.b/c.d"  should not match "/a.b/c.d/e"  should expand [:a, "a"] and [:b, "b"]  should expand [:a, "a"], [:b, "b"], and [:c, "c"]  should generate template "/{a}/{b}"  should generate template "/{a}/{b}."  should generate template "/{a}/{b}.{c}" to_s  should be == /:a/:b(.)(:c) inspect  should be == # names  should be a kind of Array pattern "/:a(foo:b)"  string should be immune to external change  should match "/barfoobar"  should match "/barfoobarfoobar"  should match "/bar"  should not match "/"  should expand [:a, "a"]  should expand [:a, "a"] and [:b, "b"]  should generate template "/{a}foo{b}"  should generate template "/{a}"  should not generate template "/{a}foo" to_s  should be == /:a(foo:b) inspect  should be == # names  should be a kind of Array pattern "/fo(o)"  string should be immune to external change  should match "/fo"  should match "/foo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo"  should expand to_s  should be == /fo(o) inspect  should be == # names  should be a kind of Array pattern "/foo?"  string should be immune to external change  should match "/foo?"  should not match "/foo\\?"  should not match "/fo"  should not match "/foo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo"  should expand to_s  should be == /foo? inspect  should be == # names  should be a kind of Array pattern "/:fOO"  string should be immune to external change  should match "/a" to_s  should be == /:fOO inspect  should be == # names  should be a kind of Array pattern "/:_X"  string should be immune to external change  should match "/a" to_s  should be == /: X inspect  should be == # names  should be a kind of Array pattern "/:f00"  string should be immune to external change  should match "/a" to_s  should be == /:f00 inspect  should be == # names  should be a kind of Array pattern "/:foo(/:bar)/:baz"  string should be immune to external change  should match "/foo/bar/baz"  should expand [:foo, "a"] and [:baz, "b"]  should expand [:foo, "a"], [:baz, "b"], and [:bar, "x"] to_s  should be == /:foo(/:bar)/:baz inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>/\d+/}  string should be immune to external change  should match "/1"  should match "/123"  should not match "/"  should not match "/foo" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>/\d+/}  string should be immune to external change  should match "/1"  should match "/123"  should not match "/"  should not match "/foo" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>"1"}  string should be immune to external change  should match "/1"  should not match "/"  should not match "/foo"  should not match "/123" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>"a.b"}  string should be immune to external change  should match "/a.b"  should match "/a%2Eb"  should match "/a%2eb"  should not match "/ab"  should not match "/afb"  should not match "/a1b"  should not match "/a.bc" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo(/:bar)" with options {:capture=>:alpha}  string should be immune to external change  should match "/abc"  should match "/a/b"  should match "/a"  should not match "/1/2"  should not match "/a/2"  should not match "/1/b"  should not match "/1"  should not match "/1/"  should not match "/a/"  should not match "//a" to_s  should be == /:foo(/:bar) inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>["foo", "bar", /\d+/]}  string should be immune to external change  should match "/1"  should match "/123"  should match "/foo"  should match "/bar"  should not match "/"  should not match "/baz"  should not match "/foo1" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo:bar:baz" with options {:capture=>{:foo=>:alpha, :bar=>/\d+/}}  string should be immune to external change  should match "/ab123xy-1"  should match "/ab123"  should not match "/123abcxy-1"  should not match "/abcxy-1"  should not match "/abc1" to_s  should be == /:foo:bar:baz inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>{:foo=>["foo", "bar", /\d+/]}}  string should be immune to external change  should match "/1"  should match "/123"  should match "/foo"  should match "/bar"  should not match "/"  should not match "/baz"  should not match "/foo1" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)" with options {:capture=>{:ext=>["jpg", "png"]}}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony.png"  should match "/pony%2Epng"  should match "/pony%2epng"  should match "/pony.png.jpg"  should match "/pony.jpg.png"  should match "/pony.gif"  should match "/pony."  should not match ".jpg" to_s  should be == /:file(.:ext) inspect  should be == # names  should be a kind of Array pattern "/:file(:ext)" with options {:capture=>{:ext=>[".jpg", ".png", ".tar.gz"]}}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony.png"  should match "/pony.png.jpg"  should match "/pony.jpg.png"  should match "/pony.tar.gz"  should match "/pony.gif"  should match "/pony."  should not match "/.jpg" to_s  should be == /:file(:ext) inspect  should be == # names  should be a kind of Array pattern "/:a(@:b)" with options {:capture=>{:b=>/\d+/}}  string should be immune to external change  should match "/a"  should match "/a@1"  should match "/a@b"  should match "/a@1@2" to_s  should be == /:a(@:b) inspect  should be == # names  should be a kind of Array pattern "/:a(b)" with options {:greedy=>false}  string should be immune to external change  should match "/ab" to_s  should be == /:a(b) inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)" with options {:greedy=>false}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony.png.jpg" to_s  should be == /:file(.:ext) inspect  should be == # names  should be a kind of Array pattern "/:controller(/:action(/:id(.:format)))"  string should be immune to external change  should match "/content" to_s  should be == /:controller(/:action(/:id(.:format))) inspect  should be == # names  should be a kind of Array pattern "/fo(o)" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo"  should match "/fo"  should not match "/fo(o)" to_s  should be == /fo(o) inspect  should be == # names  should be a kind of Array pattern "/foo/bar" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:uri_decode=>false}  string should be immune to external change  should match "/path with spaces"  should not match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:space_matches_plus=>false}  string should be immune to external change  should match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array invalid syntax  unexpected closing parenthesis  missing closing parenthesis invalid capture names  empty name  named splat  named captures  with capital letter  with integer  same name twice Regexp compatibility ===  non-matching  matching =~  non-matching  matching String#=~  non-matching  matching to_regexp  empty pattern Regexp.try_convert  empty pattern Proc compatibility to_proc  should be a kind of Proc  non-matching  matching peeking peek_size  should be == 7  should be == 9  should be nil peek_match  should be == foo bar  should be == foo%20bar  should be nil peek_params  should be == [{"name"=>"foo bar"}, 7]  should be == [{"name"=>"foo bar"}, 9]  should be nil version compatibility 2.3 pattern "(foo)" with options {:version=>"2.3"}  string should be immune to external change  should not match ""  should not match "foo"  should match "(foo)" to_s  should be == (foo) inspect  should be == # names  should be a kind of Array pattern "\\:name" with options {:version=>"2.3"}  string should be immune to external change  should match "%5cfoo" to_s  should be == \:name inspect  should be == # names  should be a kind of Array 3.0 pattern "(foo)" with options {:version=>"3.0"}  string should be immune to external change  should match ""  should match "foo" to_s  should be == (foo) inspect  should be == # names  should be a kind of Array pattern "\\:name" with options {:version=>"3.0"}  string should be immune to external change  should match ":name"  should not match ":foo" to_s  should be == \:name inspect  should be == # names  should be a kind of Array 3.2 pattern "\\:name" with options {:version=>"3.2"}  string should be immune to external change  should match "%5cfoo" to_s  should be == \:name inspect  should be == # names  should be a kind of Array 4.0 pattern "\\:name" with options {:version=>"4.0"}  string should be immune to external change  should match "foo" to_s  should be == \:name inspect  should be == # names  should be a kind of Array 4.2 pattern "\\:name" with options {:version=>"4.2"}  string should be immune to external change  should match ":name"  should not match ":foo" to_s  should be == \:name inspect  should be == # names  should be a kind of Array Mustermann::RegexpBased  raises a NotImplementedError when used directly Mustermann::Regular pattern ""  string should be immune to external change  should match ""  should not match "/"  should not respond to #expand  should not respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo" to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar" to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/(?.*)"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar" to_s  should be == /(?.*) inspect  should be == #.*)"> names  should be a kind of Array peeking peek_size  should be == 7  should be == 9  should be nil peek_match  should be == foo bar  should be == foo%20bar  should be nil peek_params  should be == [{"name"=>"foo bar"}, 7]  should be == [{"name"=>"foo bar"}, 9]  should be nil Mustermann::Router::Rack matching  should be == 418  should be == 404 params  should be == foo  should be == bar X-Cascade: pass  should be == c throw :pass  should be == b Mustermann::Router::Simple initialize with implicit receiver  should be == bar with explicit receiver  should be == bar with default  should be == bar []=  should be == ["/foo", {"name"=>"foo"}] []  should be == 42 Mustermann::Shell pattern ""  string should be immune to external change  should match ""  should not match "/"  should not respond to #expand  should not respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo"  should be == {}  should be nil to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar" to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should match "/foo%2Fbar"  should match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/*/bar"  string should be immune to external change  should match "/foo/bar"  should match "/bar/bar"  should match "/foo%2Fbar"  should match "/foo%2fbar"  should not match "/foo/foo/bar"  should not match "/bar/foo" to_s  should be == /*/bar inspect  should be == # names  should be a kind of Array pattern "/**/foo"  string should be immune to external change  should match "/a/b/c/foo"  should match "/a/b/c/foo"  should match "/a/.b/c/foo"  should match "/a/.b/c/foo" to_s  should be == /**/foo inspect  should be == # names  should be a kind of Array pattern "/:foo"  string should be immune to external change  should match "/:foo"  should match "/%3Afoo"  should not match "/foo"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/f\u00F6\u00F6"  string should be immune to external change  should match "/f%C3%B6%C3%B6" to_s  should be == /föö inspect  should be == # names  should be a kind of Array pattern "/test$/"  string should be immune to external change  should match "/test$/" to_s  should be == /test$/ inspect  should be == # names  should be a kind of Array pattern "/te+st/"  string should be immune to external change  should match "/te+st/"  should not match "/test/"  should not match "/teest/" to_s  should be == /te+st/ inspect  should be == # names  should be a kind of Array pattern "/path with spaces"  string should be immune to external change  should match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/foo&bar"  string should be immune to external change  should match "/foo&bar" to_s  should be == /foo&bar inspect  should be == # names  should be a kind of Array pattern "/test.bar"  string should be immune to external change  should match "/test.bar"  should not match "/test0bar" to_s  should be == /test.bar inspect  should be == # names  should be a kind of Array pattern "/{foo,bar}"  string should be immune to external change  should not match "/foobar" to_s  should be == /{foo,bar} inspect  should be == # names  should be a kind of Array pattern "/foo/bar" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:uri_decode=>false}  string should be immune to external change  should not match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array =~  should be =~ /foo Mustermann::SimpleMatch  should be == to_s  should be == example names  should be == [] captures  should be == [] Mustermann::Simple pattern ""  string should be immune to external change  should match ""  should not match "/"  should not respond to #expand  should not respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo" to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar" to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/:foo"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/f\u00F6\u00F6"  string should be immune to external change  should match "/f%C3%B6%C3%B6" to_s  should be == /föö inspect  should be == # names  should be a kind of Array pattern "/:foo/:bar"  string should be immune to external change  should match "/foo/bar"  should match "/foo.bar/bar.foo"  should match "/user@example.com/name"  should match "/10.1/te.st"  should match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should be == {"foo"=>"bar", "bar"=>"foo"}  should be nil to_s  should be == /:foo/:bar inspect  should be == # names  should be a kind of Array pattern "/hello/:person"  string should be immune to external change  should match "/hello/Frank" to_s  should be == /hello/:person inspect  should be == # names  should be a kind of Array pattern "/?:foo?/?:bar?"  string should be immune to external change  should match "/hello/world"  should match "/hello"  should match "/"  should match ""  should not match "/hello/world/" to_s  should be == /?:foo?/?:bar? inspect  should be == # names  should be a kind of Array pattern "/*"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should be == {"splat"=>["foo"]} to_s  should be == /* inspect  should be == # names  should be a kind of Array pattern "/:foo/*"  string should be immune to external change  should match "/foo/bar/baz"  should match "/foo/"  should match "/h%20w/h%20a%20y"  should not match "/foo"  should be == {"splat"=>["foo"], "foo"=>"bar"}  should be == {"splat"=>["foo/f o"], "foo"=>"bar"} to_s  should be == /:foo/* inspect  should be == # names  should be a kind of Array pattern "/test$/"  string should be immune to external change  should match "/test$/" to_s  should be == /test$/ inspect  should be == # names  should be a kind of Array pattern "/te+st/"  string should be immune to external change  should match "/te+st/"  should not match "/test/"  should not match "/teest/" to_s  should be == /te+st/ inspect  should be == # names  should be a kind of Array pattern "/path with spaces"  string should be immune to external change  should match "/path%20with%20spaces"  should match "/path%2Bwith%2Bspaces"  should match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/foo&bar"  string should be immune to external change  should match "/foo&bar" to_s  should be == /foo&bar inspect  should be == # names  should be a kind of Array pattern "/*/:foo/*/*"  string should be immune to external change  should match "/bar/foo/bling/baz/boom"  should capture all splat parts  should map to proper params to_s  should be == /*/:foo/*/* inspect  should be == # names  should be a kind of Array pattern "/test.bar"  string should be immune to external change  should match "/test.bar"  should not match "/test0bar" to_s  should be == /test.bar inspect  should be == # names  should be a kind of Array pattern "/:file.:ext"  string should be immune to external change  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony%E6%AD%A3%2Ejpg"  should match "/pony%e6%ad%a3%2ejpg"  should match "/pony\u6B63%2Ejpg"  should match "/pony\u6B63%2ejpg"  should match "/pony\u6B63..jpg"  should not match "/.jpg" to_s  should be == /:file.:ext inspect  should be == # names  should be a kind of Array pattern "/:id/test.bar"  string should be immune to external change  should match "/3/test.bar"  should match "/2/test.bar"  should match "/2E/test.bar"  should match "/2e/test.bar"  should match "/%2E/test.bar" to_s  should be == /:id/test.bar inspect  should be == # names  should be a kind of Array pattern "/10/:id"  string should be immune to external change  should match "/10/test"  should match "/10/te.st" to_s  should be == /10/:id inspect  should be == # names  should be a kind of Array pattern "/10.1/:id"  string should be immune to external change  should match "/10.1/test"  should match "/10.1/te.st" to_s  should be == /10.1/:id inspect  should be == # names  should be a kind of Array pattern "/foo?"  string should be immune to external change  should match "/fo"  should match "/foo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo" to_s  should be == /foo? inspect  should be == # names  should be a kind of Array pattern "/:fOO"  string should be immune to external change  should match "/a" to_s  should be == /:fOO inspect  should be == # names  should be a kind of Array pattern "/:_X"  string should be immune to external change  should match "/a" to_s  should be == /: X inspect  should be == # names  should be a kind of Array pattern "/:f00"  string should be immune to external change  should match "/a" to_s  should be == /:f00 inspect  should be == # names  should be a kind of Array pattern "/:foo.?"  string should be immune to external change  should match "/a."  should match "/xy" to_s  should be == /:foo.? inspect  should be == # names  should be a kind of Array pattern "/(a)"  string should be immune to external change  should match "/(a)"  should not match "/a" to_s  should be == /(a) inspect  should be == # names  should be a kind of Array pattern "/:foo.?" with options {:greedy=>false}  string should be immune to external change  should match "/a."  should match "/xy" to_s  should be == /:foo.? inspect  should be == # names  should be a kind of Array pattern "/foo?" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo"  should match "/fo"  should not match "/foo?" to_s  should be == /foo? inspect  should be == # names  should be a kind of Array pattern "/foo/bar" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:uri_decode=>false}  string should be immune to external change  should match "/path with spaces"  should not match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:space_matches_plus=>false}  string should be immune to external change  should match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array error handling  ? at beginning of route  invalid capture name peeking peek_size  should be == 7  should be == 9  should be nil peek_match  should be == foo bar  should be == foo%20bar  should be nil peek_params  should be == [{"name"=>"foo bar"}, 7]  should be == [{"name"=>"foo bar"}, 9]  should be nil Mustermann::Sinatra pattern ""  string should be immune to external change  should match ""  should not match "/"  should generate template ""  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array pattern "/"  string should be immune to external change  should match "/"  should not match "/foo" to_s  should be == / inspect  should be == # names  should be a kind of Array pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar" to_s  should be == /foo inspect  should be == # names  should be a kind of Array pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/foo\\/bar"  string should be immune to external change  should match "/foo/bar"  should match "/foo%2Fbar"  should match "/foo%2fbar" to_s  should be == /foo\/bar inspect  should be == # names  should be a kind of Array pattern "/:foo"  string should be immune to external change  should match "/foo"  should match "/bar"  should match "/foo.bar"  should match "/%0Afoo"  should match "/foo%2Fbar"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/"  should generate template "/{foo}" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/f\u00F6\u00F6"  string should be immune to external change  should match "/f%C3%B6%C3%B6" to_s  should be == /föö inspect  should be == # names  should be a kind of Array pattern "/:foo/:bar"  string should be immune to external change  should match "/foo/bar"  should match "/foo.bar/bar.foo"  should match "/user@example.com/name"  should match "/10.1/te.st"  should match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should be == {"foo"=>"bar", "bar"=>"foo"}  should be nil  should generate template "/{foo}/{bar}" to_s  should be == /:foo/:bar inspect  should be == # names  should be a kind of Array pattern "/{foo}/{bar}"  string should be immune to external change  should match "/foo/bar"  should match "/foo.bar/bar.foo"  should match "/user@example.com/name"  should match "/10.1/te.st"  should match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar"  should be == {"foo"=>"bar", "bar"=>"foo"}  should be nil  should generate template "/{foo}/{bar}" to_s  should be == /{foo}/{bar} inspect  should be == # names  should be a kind of Array pattern "/hello/:person"  string should be immune to external change  should match "/hello/Frank"  should generate template "/hello/{person}" to_s  should be == /hello/:person inspect  should be == # names  should be a kind of Array pattern "/hello/{person}"  string should be immune to external change  should match "/hello/Frank"  should generate template "/hello/{person}" to_s  should be == /hello/{person} inspect  should be == # names  should be a kind of Array pattern "/?:foo?/?:bar?"  string should be immune to external change  should match "/hello/world"  should match "/hello"  should match "/"  should match ""  should expand [:foo, "hello"]  should expand [:foo, "hello"] and [:bar, "world"]  should expand [:bar, "world"]  should expand  should not expand [:baz, ""]  should not match "/hello/world/"  should generate templates "", "/", "//", "//{bar}", "/{bar}", "/{foo}", "/{foo}/", "/{foo}/{bar}", "/{foo}{bar}", "{bar}", "{foo}", "{foo}/", "{foo}/{bar}", and "{foo}{bar}" to_s  should be == /?:foo?/?:bar? inspect  should be == # names  should be a kind of Array pattern "/:foo_bar"  string should be immune to external change  should match "/hello"  should generate template "/{foo_bar}" to_s  should be == /:foo bar inspect  should be == # names  should be a kind of Array pattern "/{foo.bar}"  string should be immune to external change  should match "/hello"  should generate template "/{foo.bar}" to_s  should be == /{foo.bar} inspect  should be == # names  should be a kind of Array pattern "/*"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+splat}"  should be == {"splat"=>["foo"]} to_s  should be == /* inspect  should be == # names  should be a kind of Array pattern "/{+splat}"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+splat}"  should be == {"splat"=>["foo"]} to_s  should be == /{+splat} inspect  should be == # names  should be a kind of Array pattern "/*foo"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+foo}"  should be == {"foo"=>"foo"}  should be == {"foo"=>"foo/bar"} to_s  should be == /*foo inspect  should be == # names  should be a kind of Array pattern "/{+foo}"  string should be immune to external change  should match "/"  should match "/foo"  should match "/foo/bar"  should generate template "/{+foo}"  should be == {"foo"=>"foo"}  should be == {"foo"=>"foo/bar"} to_s  should be == /{+foo} inspect  should be == # names  should be a kind of Array pattern "/*foo/*bar"  string should be immune to external change  should match "/foo/bar"  should generate template "/{+foo}/{+bar}" to_s  should be == /*foo/*bar inspect  should be == # names  should be a kind of Array pattern "/{+foo}/{+bar}"  string should be immune to external change  should match "/foo/bar"  should generate template "/{+foo}/{+bar}" to_s  should be == /{+foo}/{+bar} inspect  should be == # names  should be a kind of Array pattern "/:foo/*"  string should be immune to external change  should match "/foo/bar/baz"  should match "/foo/"  should match "/h%20w/h%20a%20y"  should not match "/foo"  should generate template "/{foo}/{+splat}"  should be == {"splat"=>["foo"], "foo"=>"bar"}  should be == {"splat"=>["foo/f o"], "foo"=>"bar"} to_s  should be == /:foo/* inspect  should be == # names  should be a kind of Array pattern "/{foo}/*"  string should be immune to external change  should match "/foo/bar/baz"  should match "/foo/"  should match "/h%20w/h%20a%20y"  should not match "/foo"  should generate template "/{foo}/{+splat}"  should be == {"splat"=>["foo"], "foo"=>"bar"}  should be == {"splat"=>["foo/f o"], "foo"=>"bar"} to_s  should be == /{foo}/* inspect  should be == # names  should be a kind of Array pattern "/test$/"  string should be immune to external change  should match "/test$/" to_s  should be == /test$/ inspect  should be == # names  should be a kind of Array pattern "/te+st/"  string should be immune to external change  should match "/te+st/"  should not match "/test/"  should not match "/teest/" to_s  should be == /te+st/ inspect  should be == # names  should be a kind of Array pattern "/path with spaces"  string should be immune to external change  should match "/path%20with%20spaces"  should match "/path%2Bwith%2Bspaces"  should match "/path+with+spaces"  should generate template "/path%20with%20spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/foo&bar"  string should be immune to external change  should match "/foo&bar" to_s  should be == /foo&bar inspect  should be == # names  should be a kind of Array pattern "/foo\\{bar"  string should be immune to external change  should match "/foo%7Bbar" to_s  should be == /foo\{bar inspect  should be == # names  should be a kind of Array pattern "/*/:foo/*/*"  string should be immune to external change  should match "/bar/foo/bling/baz/boom"  should capture all splat parts  should map to proper params to_s  should be == /*/:foo/*/* inspect  should be == # names  should be a kind of Array pattern "/{+splat}/{foo}/{+splat}/{+splat}"  string should be immune to external change  should match "/bar/foo/bling/baz/boom"  should capture all splat parts  should map to proper params to_s  should be == /{+splat}/{foo}/{+splat}/{+splat} inspect  should be == # names  should be a kind of Array pattern "/test.bar"  string should be immune to external change  should match "/test.bar"  should not match "/test0bar" to_s  should be == /test.bar inspect  should be == # names  should be a kind of Array pattern "/:file.:ext"  string should be immune to external change  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony%E6%AD%A3%2Ejpg"  should match "/pony%e6%ad%a3%2ejpg"  should match "/pony\u6B63%2Ejpg"  should match "/pony\u6B63%2ejpg"  should match "/pony\u6B63..jpg"  should not match "/.jpg" to_s  should be == /:file.:ext inspect  should be == # names  should be a kind of Array pattern "/(:a)x?"  string should be immune to external change  should match "/a"  should match "/xa"  should match "/axa"  should match "/ax"  should match "/axax"  should match "/axaxx"  should generate template "/{a}x"  should generate template "/{a}" to_s  should be == /(:a)x? inspect  should be == # names  should be a kind of Array pattern "/:user(@:host)?"  string should be immune to external change  should match "/foo@bar"  should match "/foo.foo@bar"  should match "/foo@bar.bar"  should generate template "/{user}"  should generate template "/{user}@{host}" to_s  should be == /:user(@:host)? inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)?"  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony.png.jpg"  should match "/pony."  should not match "/.jpg"  should generate template "/{file}"  should generate template "/{file}.{ext}"  should not generate template "/{file}." to_s  should be == /:file(.:ext)? inspect  should be == # names  should be a kind of Array pattern "/:id/test.bar"  string should be immune to external change  should match "/3/test.bar"  should match "/2/test.bar"  should match "/2E/test.bar"  should match "/2e/test.bar"  should match "/%2E/test.bar" to_s  should be == /:id/test.bar inspect  should be == # names  should be a kind of Array pattern "/10/:id"  string should be immune to external change  should match "/10/test"  should match "/10/te.st" to_s  should be == /10/:id inspect  should be == # names  should be a kind of Array pattern "/10.1/:id"  string should be immune to external change  should match "/10.1/test"  should match "/10.1/te.st" to_s  should be == /10.1/:id inspect  should be == # names  should be a kind of Array pattern "/:foo.:bar/:id"  string should be immune to external change  should match "/10.1/te.st"  should match "/10.1.2/te.st" to_s  should be == /:foo.:bar/:id inspect  should be == # names  should be a kind of Array pattern "/:a/:b.?:c?"  string should be immune to external change  should match "/a/b"  should match "/a/b.c"  should match "/a.b/c"  should match "/a.b/c.d"  should not match "/a.b/c.d/e" to_s  should be == /:a/:b.?:c? inspect  should be == # names  should be a kind of Array pattern "/:a(foo:b)?"  string should be immune to external change  should match "/barfoobar"  should match "/barfoobarfoobar"  should match "/bar"  should not match "/" to_s  should be == /:a(foo:b)? inspect  should be == # names  should be a kind of Array pattern "/foo?"  string should be immune to external change  should match "/fo"  should match "/foo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo" to_s  should be == /foo? inspect  should be == # names  should be a kind of Array pattern "/foo\\?"  string should be immune to external change  should match "/foo?"  should not match "/foo\\?"  should not match "/fo"  should not match "/foo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo" to_s  should be == /foo\? inspect  should be == # names  should be a kind of Array pattern "/foo\\\\?"  string should be immune to external change  should match "/foo%5c"  should match "/foo"  should not match "/foo\\?"  should not match "/fo"  should not match ""  should not match "/"  should not match "/f"  should not match "/fooo" to_s  should be == /foo\\? inspect  should be == # names  should be a kind of Array pattern "/\\("  string should be immune to external change  should match "/(" to_s  should be == /\( inspect  should be == # names  should be a kind of Array pattern "/\\(?"  string should be immune to external change  should match "/("  should match "/" to_s  should be == /\(? inspect  should be == # names  should be a kind of Array pattern "/(\\()?"  string should be immune to external change  should match "/("  should match "/" to_s  should be == /(\()? inspect  should be == # names  should be a kind of Array pattern "/(\\(\\))?"  string should be immune to external change  should match "/"  should match "/()"  should not match "/(" to_s  should be == /(\(\))? inspect  should be == # names  should be a kind of Array pattern "/\\(\\)?"  string should be immune to external change  should match "/("  should match "/()"  should not match "/" to_s  should be == /\(\)? inspect  should be == # names  should be a kind of Array pattern "/\\*"  string should be immune to external change  should match "/*"  should not match "/a" to_s  should be == /\* inspect  should be == # names  should be a kind of Array pattern "/\\*/*"  string should be immune to external change  should match "/*/b/c"  should not match "/a/b/c" to_s  should be == /\*/* inspect  should be == # names  should be a kind of Array pattern "/\\:foo"  string should be immune to external change  should match "/:foo"  should not match "/foo" to_s  should be == /\:foo inspect  should be == # names  should be a kind of Array pattern "/:fOO"  string should be immune to external change  should match "/a" to_s  should be == /:fOO inspect  should be == # names  should be a kind of Array pattern "/:_X"  string should be immune to external change  should match "/a" to_s  should be == /: X inspect  should be == # names  should be a kind of Array pattern "/:f00"  string should be immune to external change  should match "/a" to_s  should be == /:f00 inspect  should be == # names  should be a kind of Array pattern "/:foo(/:bar)?/:baz?"  string should be immune to external change  should match "/foo/bar/baz" to_s  should be == /:foo(/:bar)?/:baz? inspect  should be == # names  should be a kind of Array pattern "/(foo|bar)"  string should be immune to external change  should match "/foo"  should match "/bar"  should generate template "/foo"  should generate template "/bar" to_s  should be == /(foo|bar) inspect  should be == # names  should be a kind of Array pattern "/(foo\\|bar)"  string should be immune to external change  should match "/foo%7Cbar"  should generate template "/foo%7Cbar"  should not match "/foo"  should not match "/bar"  should not generate template "/foo"  should not generate template "/bar" to_s  should be == /(foo\|bar) inspect  should be == # names  should be a kind of Array pattern "/(:a/:b|:c)"  string should be immune to external change  should match "/foo"  should match "/foo/bar"  should generate template "/{a}/{b}"  should generate template "/{c}"  should expand [:a, "foo"] and [:b, "bar"]  should expand [:c, "foo"]  should not expand [:a, "foo"], [:b, "bar"], and [:c, "baz"] to_s  should be == /(:a/:b|:c) inspect  should be == # names  should be a kind of Array pattern "/:a/:b|:c"  string should be immune to external change  should match "foo"  should match "/foo/bar"  should generate template "/{a}/{b}"  should generate template "{c}"  should expand [:a, "foo"] and [:b, "bar"]  should expand [:c, "foo"]  should not expand [:a, "foo"], [:b, "bar"], and [:c, "baz"] to_s  should be == /:a/:b|:c inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>/\d+/}  string should be immune to external change  should match "/1"  should match "/123"  should not match "/"  should not match "/foo" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>/\d+/}  string should be immune to external change  should match "/1"  should match "/123"  should not match "/"  should not match "/foo" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>"1"}  string should be immune to external change  should match "/1"  should not match "/"  should not match "/foo"  should not match "/123" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>"a.b"}  string should be immune to external change  should match "/a.b"  should match "/a%2Eb"  should match "/a%2eb"  should not match "/ab"  should not match "/afb"  should not match "/a1b"  should not match "/a.bc" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo(/:bar)?" with options {:capture=>:alpha}  string should be immune to external change  should match "/abc"  should match "/a/b"  should match "/a"  should not match "/1/2"  should not match "/a/2"  should not match "/1/b"  should not match "/1"  should not match "/1/"  should not match "/a/"  should not match "//a" to_s  should be == /:foo(/:bar)? inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>["foo", "bar", /\d+/]}  string should be immune to external change  should match "/1"  should match "/123"  should match "/foo"  should match "/bar"  should not match "/"  should not match "/baz"  should not match "/foo1" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:foo:bar:baz" with options {:capture=>{:foo=>:alpha, :bar=>/\d+/}}  string should be immune to external change  should match "/ab123xy-1"  should match "/ab123"  should not match "/123abcxy-1"  should not match "/abcxy-1"  should not match "/abc1" to_s  should be == /:foo:bar:baz inspect  should be == # names  should be a kind of Array pattern "/:foo" with options {:capture=>{:foo=>["foo", "bar", /\d+/]}}  string should be immune to external change  should match "/1"  should match "/123"  should match "/foo"  should match "/bar"  should not match "/"  should not match "/baz"  should not match "/foo1" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)?" with options {:capture=>{:ext=>["jpg", "png"]}}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony%2Ejpg"  should match "/pony%2ejpg"  should match "/pony.png"  should match "/pony%2Epng"  should match "/pony%2epng"  should match "/pony.png.jpg"  should match "/pony.jpg.png"  should match "/pony.gif"  should match "/pony."  should not match ".jpg" to_s  should be == /:file(.:ext)? inspect  should be == # names  should be a kind of Array pattern "/:file:ext?" with options {:capture=>{:ext=>[".jpg", ".png", ".tar.gz"]}}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony.png"  should match "/pony.png.jpg"  should match "/pony.jpg.png"  should match "/pony.tar.gz"  should match "/pony.gif"  should match "/pony."  should not match "/.jpg" to_s  should be == /:file:ext? inspect  should be == # names  should be a kind of Array pattern "/:a(@:b)?" with options {:capture=>{:b=>/\d+/}}  string should be immune to external change  should match "/a"  should match "/a@1"  should match "/a@b"  should match "/a@1@2" to_s  should be == /:a(@:b)? inspect  should be == # names  should be a kind of Array pattern "/(:a)b?" with options {:greedy=>false}  string should be immune to external change  should match "/ab" to_s  should be == /(:a)b? inspect  should be == # names  should be a kind of Array pattern "/:file(.:ext)?" with options {:greedy=>false}  string should be immune to external change  should match "/pony"  should match "/pony.jpg"  should match "/pony.png.jpg" to_s  should be == /:file(.:ext)? inspect  should be == # names  should be a kind of Array pattern "/auth/*" with options {:except=>"/auth/login"}  string should be immune to external change  should match "/auth/admin"  should match "/auth/foobar"  should not match "/auth/login" to_s  should be == /auth/* inspect  should be == # names  should be a kind of Array pattern "/:foo/:bar" with options {:except=>"/:bar/20"}  string should be immune to external change  should match "/foo/bar"  should not match "/20/20" to_s  should be == /:foo/:bar inspect  should be == # names  should be a kind of Array pattern "/foo?" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo"  should match "/fo"  should not match "/foo?" to_s  should be == /foo? inspect  should be == # names  should be a kind of Array pattern "/foo/bar" with options {:uri_decode=>false}  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:uri_decode=>false}  string should be immune to external change  should match "/path with spaces"  should not match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array pattern "/path with spaces" with options {:space_matches_plus=>false}  string should be immune to external change  should match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array invalid syntax  unexpected closing parenthesis  missing closing parenthesis  missing unescaped closing parenthesis  ? at beginning of route  double ?  dangling escape invalid capture names  empty name  named splat  named captures  with capital letter  with integer  same name twice Regexp compatibility ===  non-matching  matching =~  non-matching  matching String#=~  non-matching  matching to_regexp  empty pattern Regexp.try_convert  empty pattern Proc compatibility to_proc  should be a kind of Proc  non-matching  matching peeking peek_size  should be == 7  should be == 9  should be nil peek_match  should be == foo bar  should be == foo%20bar  should be nil peek_params  should be == [{"name"=>"foo bar"}, 7]  should be == [{"name"=>"foo bar"}, 9]  should be nil Mustermann::StringScanner scan  should give scan result :scan, "foo", and {}  should give scan result :scan, /foo/, and {}  should give scan result :scan, :name, and {}  should give scan result :scan, ":name", and {}  should not give scan result :scan, " ", and {}  should not give scan result :scan, "bar", and {}  should give scan result :scan, "bar", and {}  should give scan result :scan, "bar", and {}  should give scan result :scan, "foo", and {} check  should give scan result :check, "foo", and {}  should give scan result :check, /foo/, and {}  should give scan result :check, :name, and {}  should give scan result :check, ":name", and {}  should not give scan result :check, " ", and {}  should not give scan result :check, "bar", and {}  should give scan result :check, "foo", and {}  should give scan result :check, "bar", and {} scan_until  should give scan result :scan_until, "foo", and {}  should give scan result :scan_until, ":name", and {}  should give scan result :scan_until, " ", and {}  should give scan result :scan_until, "bar", and {}  should not give scan result :scan_until, "baz", and {}  should give scan result :check, "bar", and {}  should give scan result :scan, "foo", and {} check_until  should give scan result :check_until, "foo", and {}  should give scan result :check_until, ":name", and {}  should give scan result :check_until, " ", and {}  should give scan result :check_until, "bar", and {}  should not give scan result :check_until, "baz", and {}  should not give scan result :check, "bar", and {} getch  should be == f  should give scan result :scan, "bar", and {}  should give scan result :scan, "foo", and {} <<  should give scan result :scan_until, "baz", and {} eos?  should not be eos  should be eos beginning_of_line?  should be beginning of line  should not be beginning of line  should not be beginning of line  should be beginning of line rest  should be == foo bar  should be == bar rest_size  should be == 7  should be == 3 peek  should be == foo  should be == foo  should be == bar inspect  should be == #  should be == # []  should be == foo bar  should be == bar  should be == bar  should be nil  should be nil  should be nil unscan  should be == bar  should be == foo bar  should raise Mustermann::StringScanner::ScanError with "unscan failed: previous match record not exist" terminate  should be eos to_h  should be == {}  example at /build/ruby-mustermann19-0.4.3+git20160621/spec/string_scanner_spec.rb:256 to_s  should be == foo bar clear_cache  should be == 0 Mustermann::Template pattern ""  string should be immune to external change  should match ""  should not match "/"  should respond to #expand  should respond to #to_templates to_s  should be == inspect  should be == # names  should be a kind of Array to_templates  should be == [""] pattern "/"  string should be immune to external change  should match "/"  should not match "/foo" to_s  should be == / inspect  should be == # names  should be a kind of Array to_templates  should be == ["/"] pattern "/foo"  string should be immune to external change  should match "/foo"  should not match "/bar"  should not match "/foo.bar" to_s  should be == /foo inspect  should be == # names  should be a kind of Array to_templates  should be == ["/foo"] pattern "/foo/bar"  string should be immune to external change  should match "/foo/bar"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /foo/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["/foo/bar"] pattern "/:foo"  string should be immune to external change  should match "/:foo"  should match "/%3Afoo"  should not match "/foo"  should not match "/foo?"  should not match "/foo/bar"  should not match "/"  should not match "/foo/" to_s  should be == /:foo inspect  should be == # names  should be a kind of Array to_templates  should be == ["/:foo"] pattern "/f\u00F6\u00F6"  string should be immune to external change  should match "/f%C3%B6%C3%B6" to_s  should be == /föö inspect  should be == # names  should be a kind of Array to_templates  should be == ["/f\u00F6\u00F6"] pattern "/test$/"  string should be immune to external change  should match "/test$/" to_s  should be == /test$/ inspect  should be == # names  should be a kind of Array to_templates  should be == ["/test$/"] pattern "/te+st/"  string should be immune to external change  should match "/te+st/"  should not match "/test/"  should not match "/teest/" to_s  should be == /te+st/ inspect  should be == # names  should be a kind of Array to_templates  should be == ["/te+st/"] pattern "/path with spaces"  string should be immune to external change  should match "/path%20with%20spaces"  should match "/path%2Bwith%2Bspaces"  should match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array to_templates  should be == ["/path with spaces"] pattern "/foo&bar"  string should be immune to external change  should match "/foo&bar" to_s  should be == /foo&bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["/foo&bar"] pattern "/test.bar"  string should be immune to external change  should match "/test.bar"  should not match "/test0bar" to_s  should be == /test.bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["/test.bar"] pattern "/path with spaces" with options {:space_matches_plus=>false}  string should be immune to external change  should match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array to_templates  should be == ["/path with spaces"] pattern "/path with spaces" with options {:uri_decode=>false}  string should be immune to external change  should not match "/path%20with%20spaces"  should not match "/path%2Bwith%2Bspaces"  should not match "/path+with+spaces" to_s  should be == /path with spaces inspect  should be == # names  should be a kind of Array to_templates  should be == ["/path with spaces"] level 1 without operator pattern "/hello/{person}"  string should be immune to external change  should match "/hello/Frank"  should match "/hello/a_b~c"  should match "/hello/a.%20"  should not match "/hello/:"  should not match "/hello//"  should not match "/hello/?"  should not match "/hello/#"  should not match "/hello/["  should not match "/hello/]"  should not match "/hello/@"  should not match "/hello/!"  should not match "/hello/*"  should not match "/hello/+"  should not match "/hello/,"  should not match "/hello/;"  should not match "/hello/="  should be == {"person"=>"Frank"} to_s  should be == /hello/{person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello/{person}"] pattern "/{foo}/{bar}"  string should be immune to external change  should match "/foo/bar"  should match "/foo.bar/bar.foo"  should match "/10.1/te.st"  should match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /{foo}/{bar} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/{foo}/{bar}"] level 2 operator + pattern "/hello/{+person}"  string should be immune to external change  should match "/hello/Frank"  should match "/hello/a_b~c"  should match "/hello/a.%20"  should match "/hello/a/%20"  should match "/hello/:"  should match "/hello//"  should match "/hello/?"  should match "/hello/#"  should match "/hello/["  should match "/hello/]"  should match "/hello/@"  should match "/hello/!"  should match "/hello/*"  should match "/hello/+"  should match "/hello/,"  should match "/hello/;"  should match "/hello/=" to_s  should be == /hello/{+person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello/{+person}"] pattern "/{+foo}/{bar}"  string should be immune to external change  should match "/foo/bar"  should match "/foo.bar/bar.foo"  should match "/foo/bar/bar.foo"  should match "/10.1/te.st"  should match "/10.1.2/te.st"  should not match "/foo%2Fbar"  should not match "/foo%2fbar" to_s  should be == /{+foo}/{bar} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/{+foo}/{bar}"] operator # pattern "/hello/{#person}"  string should be immune to external change  should match "/hello/#Frank"  should match "/hello/#a_b~c"  should match "/hello/#a.%20"  should match "/hello/#a/%20"  should match "/hello/#:"  should match "/hello/#/"  should match "/hello/#?"  should match "/hello/##"  should match "/hello/#["  should match "/hello/#]"  should match "/hello/\#@"  should match "/hello/#!"  should match "/hello/#*"  should match "/hello/#+"  should match "/hello/#,"  should match "/hello/#;"  should match "/hello/#="  should not match "/hello/Frank"  should not match "/hello/a_b~c"  should not match "/hello/a.%20"  should not match "/hello/:"  should not match "/hello//"  should not match "/hello/?"  should not match "/hello/#"  should not match "/hello/["  should not match "/hello/]"  should not match "/hello/@"  should not match "/hello/!"  should not match "/hello/*"  should not match "/hello/+"  should not match "/hello/,"  should not match "/hello/;"  should not match "/hello/="  should be == {"person"=>"Frank"} to_s  should be == /hello/{#person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello/{#person}"] pattern "/{+foo}/{#bar}"  string should be immune to external change  should match "/foo/#bar"  should match "/foo.bar/#bar.foo"  should match "/foo/bar/#bar.foo"  should match "/10.1/#te.st"  should match "/10.1.2/#te.st"  should not match "/foo%2F#bar"  should not match "/foo%2f#bar"  should be == {"foo"=>"hello", "bar"=>"Frank"} to_s  should be == /{+foo}/{#bar} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/{+foo}/{#bar}"] level 3 without operator pattern "{a,b,c}"  string should be immune to external change  should match "~x,42,_"  should not match "~x,42"  should not match "~x/42"  should not match "~x#42"  should not match "~x,42,_#42"  should be == {"a"=>"d", "b"=>"f", "c"=>"g"} to_s  should be == {a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{a,b,c}"] operator + pattern "{+a,b,c}"  string should be immune to external change  should match "~x,42,_"  should match "~x,42,_#42"  should match "~/x,42,_/42"  should not match "~x,42"  should not match "~x/42"  should not match "~x#42" to_s  should be == {+a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{+a,b,c}"] operator # pattern "{#a,b,c}"  string should be immune to external change  should match "#~x,42,_"  should match "#~x,42,_#42"  should match "#~/x,42,_#42"  should not match "~x,42,_"  should not match "~x,42,_#42"  should not match "~/x,42,_#42"  should not match "~x,42"  should not match "~x/42"  should not match "~x#42" to_s  should be == {#a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{#a,b,c}"] operator . pattern "/hello/{.person}"  string should be immune to external change  should match "/hello/.Frank"  should match "/hello/.a_b~c"  should not match "/hello/.:"  should not match "/hello/./"  should not match "/hello/.?"  should not match "/hello/.#"  should not match "/hello/.["  should not match "/hello/.]"  should not match "/hello/.@"  should not match "/hello/.!"  should not match "/hello/.*"  should not match "/hello/.+"  should not match "/hello/.,"  should not match "/hello/.;"  should not match "/hello/.="  should not match "/hello/Frank"  should not match "/hello/a_b~c"  should not match "/hello/a.%20"  should not match "/hello/:"  should not match "/hello//"  should not match "/hello/?"  should not match "/hello/#"  should not match "/hello/["  should not match "/hello/]"  should not match "/hello/@"  should not match "/hello/!"  should not match "/hello/*"  should not match "/hello/+"  should not match "/hello/,"  should not match "/hello/;"  should not match "/hello/=" to_s  should be == /hello/{.person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello/{.person}"] pattern "{.a,b,c}"  string should be immune to external change  should match ".~x.42._"  should not match ".~x,42"  should not match ".~x/42"  should not match ".~x#42"  should not match ".~x,42,_"  should not match "~x.42._" to_s  should be == {.a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{.a,b,c}"] operator / pattern "/hello{/person}"  string should be immune to external change  should match "/hello/Frank"  should match "/hello/a_b~c"  should not match "/hello//:"  should not match "/hello///"  should not match "/hello//?"  should not match "/hello//#"  should not match "/hello//["  should not match "/hello//]"  should not match "/hello//@"  should not match "/hello//!"  should not match "/hello//*"  should not match "/hello//+"  should not match "/hello//,"  should not match "/hello//;"  should not match "/hello//="  should not match "/hello/:"  should not match "/hello//"  should not match "/hello/?"  should not match "/hello/#"  should not match "/hello/["  should not match "/hello/]"  should not match "/hello/@"  should not match "/hello/!"  should not match "/hello/*"  should not match "/hello/+"  should not match "/hello/,"  should not match "/hello/;"  should not match "/hello/=" to_s  should be == /hello{/person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello{/person}"] pattern "{/a,b,c}"  string should be immune to external change  should match "/~x/42/_"  should not match "/~x,42"  should not match "/~x.42"  should not match "/~x#42"  should not match "/~x,42,_"  should not match "~x/42/_" to_s  should be == {/a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{/a,b,c}"] operator ; pattern "/hello/{;person}"  string should be immune to external change  should match "/hello/;person=Frank"  should match "/hello/;person=a_b~c"  should match "/hello/;person"  should not match "/hello/;persona=Frank"  should not match "/hello/;persona=a_b~c"  should not match "/hello/;person=:"  should not match "/hello/;person=/"  should not match "/hello/;person=?"  should not match "/hello/;person=#"  should not match "/hello/;person=["  should not match "/hello/;person=]"  should not match "/hello/;person=@"  should not match "/hello/;person=!"  should not match "/hello/;person=*"  should not match "/hello/;person=+"  should not match "/hello/;person=,"  should not match "/hello/;person=;"  should not match "/hello/;person=="  should not match "/hello/;Frank"  should not match "/hello/;a_b~c"  should not match "/hello/;a.%20"  should not match "/hello/:"  should not match "/hello//"  should not match "/hello/?"  should not match "/hello/#"  should not match "/hello/["  should not match "/hello/]"  should not match "/hello/@"  should not match "/hello/!"  should not match "/hello/*"  should not match "/hello/+"  should not match "/hello/,"  should not match "/hello/;"  should not match "/hello/=" to_s  should be == /hello/{;person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello/{;person}"] pattern "{;a,b,c}"  string should be immune to external change  should match ";a=~x;b=42;c=_"  should match ";a=~x;b;c=_"  should not match ";a=~x;c=_;b=42"  should not match ";a=~x;b=42"  should not match "a=~x;b=42"  should not match ";a=~x;b=#42;c"  should not match ";a=~x,b=42,c=_"  should not match "~x;b=42;c=_" to_s  should be == {;a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{;a,b,c}"] operator ? pattern "/hello/{?person}"  string should be immune to external change  should match "/hello/?person=Frank"  should match "/hello/?person=a_b~c"  should match "/hello/?person"  should not match "/hello/?persona=Frank"  should not match "/hello/?persona=a_b~c"  should not match "/hello/?person=:"  should not match "/hello/?person=/"  should not match "/hello/?person=?"  should not match "/hello/?person=#"  should not match "/hello/?person=["  should not match "/hello/?person=]"  should not match "/hello/?person=@"  should not match "/hello/?person=!"  should not match "/hello/?person=*"  should not match "/hello/?person=+"  should not match "/hello/?person=,"  should not match "/hello/?person=;"  should not match "/hello/?person=="  should not match "/hello/?Frank"  should not match "/hello/?a_b~c"  should not match "/hello/?a.%20"  should not match "/hello/:"  should not match "/hello//"  should not match "/hello/?"  should not match "/hello/#"  should not match "/hello/["  should not match "/hello/]"  should not match "/hello/@"  should not match "/hello/!"  should not match "/hello/*"  should not match "/hello/+"  should not match "/hello/,"  should not match "/hello/;"  should not match "/hello/=" to_s  should be == /hello/{?person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello/{?person}"] pattern "{?a,b,c}"  string should be immune to external change  should match "?a=~x&b=42&c=_"  should match "?a=~x&b&c=_"  should not match "?a=~x&c=_&b=42"  should not match "?a=~x&b=42"  should not match "a=~x&b=42"  should not match "?a=~x&b=#42&c"  should not match "?a=~x,b=42,c=_"  should not match "~x&b=42&c=_" to_s  should be == {?a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{?a,b,c}"] operator & pattern "/hello/{&person}"  string should be immune to external change  should match "/hello/&person=Frank"  should match "/hello/&person=a_b~c"  should match "/hello/&person"  should not match "/hello/&persona=Frank"  should not match "/hello/&persona=a_b~c"  should not match "/hello/&person=:"  should not match "/hello/&person=/"  should not match "/hello/&person=?"  should not match "/hello/&person=#"  should not match "/hello/&person=["  should not match "/hello/&person=]"  should not match "/hello/&person=@"  should not match "/hello/&person=!"  should not match "/hello/&person=*"  should not match "/hello/&person=+"  should not match "/hello/&person=,"  should not match "/hello/&person=;"  should not match "/hello/&person=="  should not match "/hello/&Frank"  should not match "/hello/&a_b~c"  should not match "/hello/&a.%20"  should not match "/hello/:"  should not match "/hello//"  should not match "/hello/?"  should not match "/hello/#"  should not match "/hello/["  should not match "/hello/]"  should not match "/hello/@"  should not match "/hello/!"  should not match "/hello/*"  should not match "/hello/+"  should not match "/hello/,"  should not match "/hello/;"  should not match "/hello/=" to_s  should be == /hello/{&person} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/hello/{&person}"] pattern "{&a,b,c}"  string should be immune to external change  should match "&a=~x&b=42&c=_"  should match "&a=~x&b&c=_"  should not match "&a=~x&c=_&b=42"  should not match "&a=~x&b=42"  should not match "a=~x&b=42"  should not match "&a=~x&b=#42&c"  should not match "&a=~x,b=42,c=_"  should not match "~x&b=42&c=_" to_s  should be == {&a,b,c} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{&a,b,c}"] level 4 without operator prefix pattern "{a:3}/bar"  string should be immune to external change  should match "foo/bar"  should match "fo/bar"  should match "f/bar"  should not match "fooo/bar" to_s  should be == {a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{a:3}/bar"] pattern "{a:3}{b}"  string should be immune to external change  should match "foobar" to_s  should be == {a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{a:3}{b}"] expand pattern "{a*}"  string should be immune to external change  should match "a"  should match "a,b"  should match "a,b,c"  should not match "a,b/c"  should not match "a,"  should be == {"a"=>["a"]}  should be == {"a"=>["a", "b"]} to_s  should be == {a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{a*}"] pattern "{a*},{b}"  string should be immune to external change  should match "a,b"  should match "a,b,c"  should not match "a,b/c"  should not match "a,"  should be == {"a"=>["a"], "b"=>"b"}  should be == {"a"=>["a", "b"], "b"=>"c"} to_s  should be == {a*},{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{a*},{b}"] pattern "{a*,b}"  string should be immune to external change  should match "a,b"  should match "a,b,c"  should not match "a,b/c"  should not match "a,"  should be == {"a"=>["a"], "b"=>"b"}  should be == {"a"=>["a", "b"], "b"=>"c"} to_s  should be == {a*,b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{a*,b}"] operator + pattern "/{a}/{+b}"  string should be immune to external change  should match "/foo/bar/baz"  should expand [:a, "foo/bar"] and [:b, "foo/bar"] to_s  should be == /{a}/{+b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["/{a}/{+b}"] prefix pattern "{+a:3}/bar"  string should be immune to external change  should match "foo/bar"  should match "fo/bar"  should match "f/bar"  should not match "fooo/bar" to_s  should be == {+a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{+a:3}/bar"] pattern "{+a:3}{b}"  string should be immune to external change  should match "foobar" to_s  should be == {+a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{+a:3}{b}"] expand pattern "{+a*}"  string should be immune to external change  should match "a"  should match "a,b"  should match "a,b,c"  should match "a,b/c" to_s  should be == {+a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{+a*}"] pattern "{+a*},{b}"  string should be immune to external change  should match "a,b"  should match "a,b,c"  should not match "a,b/c"  should not match "a,"  should be == {"a"=>["a"], "b"=>"b"}  should be == {"a"=>["a", "b"], "b"=>"c"} to_s  should be == {+a*},{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{+a*},{b}"] operator # prefix pattern "{#a:3}/bar"  string should be immune to external change  should match "#foo/bar"  should match "#fo/bar"  should match "#f/bar"  should not match "#fooo/bar" to_s  should be == {#a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{#a:3}/bar"] pattern "{#a:3}{b}"  string should be immune to external change  should match "#foobar" to_s  should be == {#a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{#a:3}{b}"] expand pattern "{#a*}"  string should be immune to external change  should match "#a"  should match "#a,b"  should match "#a,b,c"  should match "#a,b/c"  should be == {"a"=>["a", "b"]}  should be == {"a"=>["a", "b", "c"]} to_s  should be == {#a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{#a*}"] pattern "{#a*,b}"  string should be immune to external change  should match "#a,b"  should match "#a,b,c"  should not match "#a,"  should be == {"a"=>["a"], "b"=>"b"}  should be == {"a"=>["a", "b"], "b"=>"c"} to_s  should be == {#a*,b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{#a*,b}"] operator . prefix pattern "{.a:3}/bar"  string should be immune to external change  should match ".foo/bar"  should match ".fo/bar"  should match ".f/bar"  should not match ".fooo/bar" to_s  should be == {.a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{.a:3}/bar"] pattern "{.a:3}{b}"  string should be immune to external change  should match ".foobar" to_s  should be == {.a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{.a:3}{b}"] expand pattern "{.a*}"  string should be immune to external change  should match ".a"  should match ".a.b"  should match ".a.b.c"  should not match ".a.b,c"  should not match ".a," to_s  should be == {.a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{.a*}"] pattern "{.a*,b}"  string should be immune to external change  should match ".a.b"  should match ".a.b.c"  should not match ".a.b/c"  should not match ".a."  should be == {"a"=>["a"], "b"=>"b"}  should be == {"a"=>["a", "b"], "b"=>"c"} to_s  should be == {.a*,b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{.a*,b}"] operator / prefix pattern "{/a:3}/bar"  string should be immune to external change  should match "/foo/bar"  should match "/fo/bar"  should match "/f/bar"  should not match "/fooo/bar" to_s  should be == {/a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{/a:3}/bar"] pattern "{/a:3}{b}"  string should be immune to external change  should match "/foobar" to_s  should be == {/a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{/a:3}{b}"] expand pattern "{/a*}"  string should be immune to external change  should match "/a"  should match "/a/b"  should match "/a/b/c"  should not match "/a/b,c"  should not match "/a," to_s  should be == {/a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{/a*}"] pattern "{/a*,b}"  string should be immune to external change  should match "/a/b"  should match "/a/b/c"  should not match "/a/b,c"  should not match "/a/"  should be == {"a"=>["a"], "b"=>"b"}  should be == {"a"=>["a", "b"], "b"=>"c"} to_s  should be == {/a*,b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{/a*,b}"] operator ; prefix pattern "{;a:3}/bar"  string should be immune to external change  should match ";a=foo/bar"  should match ";a=fo/bar"  should match ";a=f/bar"  should not match ";a=fooo/bar" to_s  should be == {;a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{;a:3}/bar"] pattern "{;a:3}{b}"  string should be immune to external change  should match ";a=foobar" to_s  should be == {;a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{;a:3}{b}"] expand pattern "{;a*}"  string should be immune to external change  should match ";a=1"  should match ";a=1;a=2"  should match ";a=1;a=2;a=3"  should not match ";a=1;a=2;b=3"  should not match ";a=1;a=2;a=3," to_s  should be == {;a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{;a*}"] pattern "{;a*,b}"  string should be immune to external change  should match ";a=1;b"  should match ";a=2;a=2;b=1"  should not match ";a;b;c"  should not match ";a;"  should be == {"a"=>["2", "2"], "b"=>nil} to_s  should be == {;a*,b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{;a*,b}"] operator ? prefix pattern "{?a:3}/bar"  string should be immune to external change  should match "?a=foo/bar"  should match "?a=fo/bar"  should match "?a=f/bar"  should not match "?a=fooo/bar" to_s  should be == {?a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{?a:3}/bar"] pattern "{?a:3}{b}"  string should be immune to external change  should match "?a=foobar" to_s  should be == {?a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{?a:3}{b}"] expand pattern "{?a*}"  string should be immune to external change  should match "?a=1"  should match "?a=1&a=2"  should match "?a=1&a=2&a=3"  should not match "?a=1&a=2&b=3"  should not match "?a=1&a=2&a=3," to_s  should be == {?a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{?a*}"] pattern "{?a*,b}"  string should be immune to external change  should match "?a=1&b"  should match "?a=2&a=2&b=1"  should not match "?a&b&c"  should not match "?a&"  should be == {"a"=>["2", "2"], "b"=>nil} to_s  should be == {?a*,b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{?a*,b}"] operator & prefix pattern "{&a:3}/bar"  string should be immune to external change  should match "&a=foo/bar"  should match "&a=fo/bar"  should match "&a=f/bar"  should not match "&a=fooo/bar" to_s  should be == {&a:3}/bar inspect  should be == # names  should be a kind of Array to_templates  should be == ["{&a:3}/bar"] pattern "{&a:3}{b}"  string should be immune to external change  should match "&a=foobar" to_s  should be == {&a:3}{b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{&a:3}{b}"] expand pattern "{&a*}"  string should be immune to external change  should match "&a=1"  should match "&a=1&a=2"  should match "&a=1&a=2&a=3"  should not match "&a=1&a=2&b=3"  should not match "&a=1&a=2&a=3," to_s  should be == {&a*} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{&a*}"] pattern "{&a*,b}"  string should be immune to external change  should match "&a=1&b"  should match "&a=2&a=2&b=1"  should not match "&a&b&c"  should not match "&a&"  should be == {"a"=>["2", "2"], "b"=>nil}  should be == {"a"=>["2", " "], "b"=>nil} to_s  should be == {&a*,b} inspect  should be == # names  should be a kind of Array to_templates  should be == ["{&a*,b}"] invalid syntax  unexpected closing bracket  missing closing bracket peeking peek_size  should be == 9  should be nil peek_match  should be == foo%20bar  should be nil peek_params  should be == [{"name"=>"foo "}, 9]  should be nil Mustermann::ToPattern String  should be a kind of Mustermann::Sinatra  should be a kind of Mustermann::Rails Regexp  should be a kind of Mustermann::Regular  should be a kind of Mustermann::Regular Symbol  should be a kind of Mustermann::Sinatra  should be a kind of Mustermann::Sinatra Array  should be a kind of Mustermann::Composite  should be a kind of Mustermann::Composite Mustermann::Pattern  should be ==  should be a kind of Mustermann::Sinatra custom class  should be a kind of Mustermann::Sinatra  should be a kind of Mustermann::Rails  should be a kind of Mustermann::Sinatra  should be a kind of Mustermann::Rails primitive delegate  should be a kind of Mustermann::Composite  should be a kind of Mustermann::Composite primitive subclass  should be a kind of Mustermann::Composite  should be a kind of Mustermann::Composite Failures: 1) Mustermann new invalid arguments raise a TypeError for unsupported types Failure/Error: expect { Mustermann.new(10) }.to raise_error(TypeError, "Fixnum can't be coerced into Mustermann::Pattern")   expected TypeError with "Fixnum can't be coerced into Mustermann::Pattern", got # with backtrace:  # /build/ruby-mustermann19-0.4.3+git20160621/lib/mustermann.rb:72:in `new'  # /build/ruby-mustermann19-0.4.3+git20160621/spec/mustermann_spec.rb:49:in `block (5 levels) in '  # /build/ruby-mustermann19-0.4.3+git20160621/spec/mustermann_spec.rb:49:in `block (4 levels) in ' # /build/ruby-mustermann19-0.4.3+git20160621/spec/mustermann_spec.rb:49:in `block (4 levels) in ' Finished in 1.41 seconds (files took 1.08 seconds to load) 4484 examples, 1 failure Failed examples: rspec /build/ruby-mustermann19-0.4.3+git20160621/spec/mustermann_spec.rb:48 # Mustermann new invalid arguments raise a TypeError for unsupported types /usr/bin/ruby2.5 /usr/bin/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation failed ERROR: Test "ruby2.5" failed. Exiting. dh_auto_install: dh_ruby --install /build/ruby-mustermann19-0.4.3\+git20160621/debian/ruby-mustermann19 returned exit code 1 debian/rules:6: recipe for target 'binary' failed make: *** [binary] Error 1 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2