Input buildinfo: https://buildinfos.debian.net/buildinfo-pool/n/node-micromatch/node-micromatch_4.0.2+repack+~4.0.1-1_all.buildinfo Use metasnap for getting required timestamps New buildinfo file: /tmp/node-micromatch-4.0.2+repack+~4.0.1-121ut5ka8/node-micromatch_4.0.2+repack+~4.0.1-1_all.buildinfo Get source package info: node-micromatch=4.0.2+repack+~4.0.1-1 Source URL: http://snapshot.notset.fr/mr/package/node-micromatch/4.0.2+repack+~4.0.1-1/srcfiles?fileinfo=1 env -i PATH=/usr/sbin:/usr/bin:/sbin:/bin TMPDIR=/tmp mmdebstrap --arch=amd64 --include=autoconf=2.69-11.1 automake=1:1.16.2-4 autopoint=0.19.8.1-10 autotools-dev=20180224.1 base-files=11 base-passwd=3.5.48 bash=5.1~rc2-1 binutils=2.35.1-2 binutils-common=2.35.1-2 binutils-x86-64-linux-gnu=2.35.1-2 bsdextrautils=2.36-3+b2 bsdutils=1:2.36-3+b2 build-essential=12.8 bzip2=1.0.8-4 ca-certificates=20200601 coreutils=8.32-4+b1 cpp=4:10.2.0-1 cpp-10=10.2.0-16 dash=0.5.10.2-7 debconf=1.5.74 debhelper=13.2.1 debianutils=4.11.2 dh-autoreconf=19 dh-strip-nondeterminism=1.9.0-1 diffutils=1:3.7-3 dpkg=1.20.5 dpkg-dev=1.20.5 dwz=0.13-5 file=1:5.38-5 findutils=4.7.0+git20201010-2 g++=4:10.2.0-1 g++-10=10.2.0-16 gcc=4:10.2.0-1 gcc-10=10.2.0-16 gcc-10-base=10.2.0-16 gettext=0.19.8.1-10 gettext-base=0.19.8.1-10 grep=3.4-1 groff-base=1.22.4-5 gzip=1.10-2 hostname=3.23 init-system-helpers=1.58 intltool-debian=0.35.0+20060710.5 libacl1=2.2.53-8 libarchive-zip-perl=1.68-1 libarray-unique-perl=0.08-2 libasan6=10.2.0-16 libatomic1=10.2.0-16 libattr1=1:2.4.48-5 libaudit-common=1:2.8.5-3.1 libaudit1=1:2.8.5-3.1 libbinutils=2.35.1-2 libblkid1=2.36-3+b2 libbrotli1=1.0.9-2+b1 libbsd0=0.10.0-1 libbz2-1.0=1.0.8-4 libc-ares2=1.16.1-1 libc-bin=2.31-4 libc-dev-bin=2.31-4 libc6=2.31-4 libc6-dev=2.31-4 libcap-ng0=0.7.9-2.2 libcc1-0=10.2.0-16 libclass-accessor-perl=0.51-1 libcom-err2=1.45.6-1 libcroco3=0.6.13-1 libcrypt-dev=1:4.4.17-1 libcrypt1=1:4.4.17-1 libctf-nobfd0=2.35.1-2 libctf0=2.35.1-2 libdb5.3=5.3.28+dfsg1-0.6 libdebconfclient0=0.255 libdebhelper-perl=13.2.1 libdebian-copyright-perl=0.2-4 libdpkg-perl=1.20.5 libelf1=0.181-1 libencode-locale-perl=1.05-1 liberror-perl=0.17029-1 libexporter-lite-perl=0.08-1 libffi7=3.3-4 libfile-listing-perl=6.11-1 libfile-stripnondeterminism-perl=1.9.0-1 libgcc-10-dev=10.2.0-16 libgcc-s1=10.2.0-16 libgcrypt20=1.8.7-2 libgdbm-compat4=1.18.1-5.1 libgdbm6=1.18.1-5.1 libgdk-pixbuf2.0-0=2.40.0+dfsg-5 libgdk-pixbuf2.0-common=2.40.0+dfsg-5 libglib2.0-0=2.66.2-1 libgmp10=2:6.2.0+dfsg-6 libgomp1=10.2.0-16 libgpg-error0=1.38-2 libgssapi-krb5-2=1.17-10 libhtml-parser-perl=3.75-1 libhtml-tagset-perl=3.20-4 libhtml-tree-perl=5.07-2 libhttp-cookies-perl=6.08-1 libhttp-date-perl=6.05-1 libhttp-message-perl=6.26-1 libhttp-negotiate-perl=6.01-1 libicu67=67.1-4 libio-html-perl=1.001-1 libio-pty-perl=1:1.12-1 libio-socket-ssl-perl=2.068-1 libio-stringy-perl=2.111-3 libipc-run-perl=20200505.0-1 libisl22=0.22.1-1 libitm1=10.2.0-16 libjbig0=2.1-3.1+b2 libjpeg62-turbo=1:2.0.5-1.1 libjs-inherits=2.0.4-1 libjs-sprintf-js=1.1.2+ds1-1 libjson-perl=4.02000-2 libk5crypto3=1.17-10 libkeyutils1=1.6.1-2 libkrb5-3=1.17-10 libkrb5support0=1.17-10 liblsan0=10.2.0-16 liblwp-mediatypes-perl=6.04-1 liblwp-protocol-https-perl=6.09-1 liblz4-1=1.9.2-2 liblzma5=5.2.4-1+b1 libmagic-mgc=1:5.38-5 libmagic1=1:5.38-5 libmount1=2.36-3+b2 libmpc3=1.2.0-1 libmpfr6=4.1.0-3 libnet-http-perl=6.19-1 libnet-ssleay-perl=1.88-3 libnghttp2-14=1.41.0-3 libnode72=12.19.0~dfsg-1 libnotify-bin=0.7.9-1 libnotify4=0.7.9-1 libnsl-dev=1.3.0-2 libnsl2=1.3.0-2 libnss-nis=3.1-4 libnss-nisplus=1.3-4 libpam-modules=1.3.1-5 libpam-modules-bin=1.3.1-5 libpam-runtime=1.3.1-5 libpam0g=1.3.1-5 libparse-debcontrol-perl=2.005-4 libpcre2-8-0=10.34-7 libpcre3=2:8.39-13 libperl5.30=5.30.3-4 libpipeline1=1.5.3-1 libpng16-16=1.6.37-3 libquadmath0=10.2.0-16 libseccomp2=2.4.4-1+b1 libselinux1=3.1-2+b1 libsigsegv2=2.12-2 libsmartcols1=2.36-3+b2 libssl1.1=1.1.1h-1 libstdc++-10-dev=10.2.0-16 libstdc++6=10.2.0-16 libsub-name-perl=0.26-1 libsub-override-perl=0.09-2 libsystemd0=246.6-2 libtie-ixhash-perl=1.23-2 libtiff5=4.1.0+git191117-2 libtimedate-perl=2.3300-1 libtinfo6=6.2+20200918-1 libtirpc-common=1.2.6-3 libtirpc-dev=1.2.6-3 libtirpc3=1.2.6-3 libtool=2.4.6-14 libtry-tiny-perl=0.30-1 libtsan0=10.2.0-16 libubsan1=10.2.0-16 libuchardet0=0.0.7-1 libudev1=246.6-2 libunistring2=0.9.10-4 liburi-perl=5.05-1 libuuid1=2.36-3+b2 libwebp6=0.6.1-2+b1 libwww-perl=6.49-1 libwww-robotrules-perl=6.02-1 libx11-6=2:1.6.12-1 libx11-data=2:1.6.12-1 libxau6=1:1.0.8-1+b2 libxcb1=1.14-2 libxdmcp6=1:1.1.2-3 libxml2=2.9.10+dfsg-6.2 libzstd1=1.4.5+dfsg-4 linux-libc-dev=5.9.1-1 login=1:4.8.1-1 lsb-base=11.1.0 m4=1.4.18-4 make=4.3-4 man-db=2.9.3-2 mawk=1.3.4.20200120-2 mocha=7.0.1+ds1+~cs28.9.11-1 ncurses-base=6.2+20200918-1 ncurses-bin=6.2+20200918-1 netbase=6.2 node-ansi-colors=4.1.1-2 node-ansi-regex=5.0.0-1 node-ansi-styles=4.2.1-1 node-anymatch=3.1.1+~2.2.2-1 node-argparse=2.0.1-1 node-async-each=1.0.3-1 node-balanced-match=1.0.0-1 node-binary-extensions=2.1.0-1 node-brace-expansion=2.0.0-1 node-braces=3.0.2+~3.0.0-1 node-browser-stdout=1.3.1-2 node-camelcase=5.3.1-1 node-chalk=2.4.2-1 node-chokidar=3.4.3-2 node-cliui=4.1.0-2 node-clone=2.1.2-2 node-color-convert=1.9.3-1 node-color-name=1.1.4-1 node-commander=4.1.1-2 node-cross-spawn=7.0.2-1 node-debug=4.2.0+~cs4.1.5-1 node-decamelize=4.0.0-1 node-defaults=1.0.3-2 node-define-properties=1.1.3-1 node-diff=1.4.0~dfsg-4 node-end-of-stream=1.4.4-1 node-escape-string-regexp=4.0.0-1 node-esprima=4.0.1+ds+~4.0.2-1 node-execa=0.10.0+dfsg-1 node-fill-range=7.0.1-2 node-find-up=5.0.0-1 node-fs.realpath=1.0.0-1 node-function-bind=1.1.1+repack-1 node-get-caller-file=1.0.2-1 node-get-stream=4.1.0-1 node-glob=7.1.6-3 node-glob-parent=5.1.1+~5.1.0-1 node-graceful-fs=4.2.4-1 node-growl=1.10.5-2 node-has-flag=4.0.0-1 node-he=1.2.0-1 node-inflight=1.0.6-1 node-inherits=2.0.4-1 node-invert-kv=3.0.1-1 node-is-binary-path=2.1.0-1 node-is-buffer=1.1.6-1 node-is-extglob=2.1.1-1 node-is-glob=4.0.1-1 node-is-number=7.0.0-1 node-is-stream=2.0.0-1 node-isexe=2.0.0-4 node-js-yaml=3.14.0+dfsg-2 node-kind-of=6.0.3+dfsg-1 node-lcid=3.1.1-1 node-locate-path=6.0.0-1 node-lodash=4.17.20+dfsg-1 node-lodash-packages=4.17.20+dfsg-1 node-lru-cache=5.1.1-5 node-mem=1.1.0-1 node-mimic-fn=3.0.0-1 node-minimatch=3.0.4-4 node-mkdirp=1.0.4-3 node-ms=2.1.2+~cs0.7.31-1 node-normalize-path=3.0.0-2 node-npm-run-path=2.0.2-2 node-once=1.4.0-3 node-os-locale=4.0.0-1 node-p-finally=1.0.0-2 node-p-limit=3.0.2-1 node-p-locate=5.0.0-1 node-path-dirname=1.0.2-1 node-path-exists=4.0.0-2 node-path-is-absolute=2.0.0-1 node-pump=3.0.0-4 node-readdirp=3.5.0-2 node-repeat-string=1.6.1-1 node-require-directory=2.1.1-1 node-require-main-filename=2.0.0-1 node-set-blocking=2.0.0-1 node-set-immediate-shim=2.0.0-1 node-shebang-command=1.2.0-1 node-shebang-regex=3.0.0-1 node-signal-exit=3.0.3-1 node-sprintf-js=1.1.2+ds1-1 node-string-width=4.2.0-1 node-strip-ansi=6.0.0-2 node-strip-eof=1.0.0-2 node-strip-json-comments=3.1.1-1 node-supports-color=6.1.0-2 node-to-regex-range=5.0.1-2 node-wcwidth.js=1.0.0-1 node-which=2.0.2-2 node-which-module=2.0.0-1 node-wide-align=1.1.3-1 node-wrap-ansi=4.0.0-2 node-wrappy=1.0.2-1 node-y18n=4.0.0-2 node-yallist=4.0.0-1 node-yargs=15.3.1-1 node-yargs-parser=18.1.3-1 nodejs=12.19.0~dfsg-1 openssl=1.1.1h-1 patch=2.7.6-6 perl=5.30.3-4 perl-base=5.30.3-4 perl-modules-5.30=5.30.3-4 perl-openssl-defaults=5 pkg-js-tools=0.9.45 po-debconf=1.0.21 sed=4.7-1 sensible-utils=0.0.12+nmu1 shared-mime-info=2.0-1 sysvinit-utils=2.96-5 tar=1.30+dfsg-7 util-linux=2.36-3+b2 xz-utils=5.2.4-1+b1 zlib1g=1:1.2.11.dfsg-2 --variant=apt --aptopt=Acquire::Check-Valid-Until "false" --aptopt=Acquire::http::Dl-Limit "1000"; --aptopt=Acquire::https::Dl-Limit "1000"; --aptopt=Acquire::Retries "5"; --aptopt=APT::Get::allow-downgrades "true"; --keyring=/usr/share/keyrings/ --essential-hook=chroot "$1" sh -c "apt-get --yes install fakeroot util-linux" --essential-hook=copy-in /usr/share/keyrings/debian-archive-bullseye-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-security-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-stable.gpg /usr/share/keyrings/debian-archive-buster-automatic.gpg /usr/share/keyrings/debian-archive-buster-security-automatic.gpg /usr/share/keyrings/debian-archive-buster-stable.gpg /usr/share/keyrings/debian-archive-keyring.gpg /usr/share/keyrings/debian-archive-removed-keys.gpg /usr/share/keyrings/debian-archive-stretch-automatic.gpg /usr/share/keyrings/debian-archive-stretch-security-automatic.gpg /usr/share/keyrings/debian-archive-stretch-stable.gpg /usr/share/keyrings/debian-ports-archive-keyring-removed.gpg /usr/share/keyrings/debian-ports-archive-keyring.gpg /usr/share/keyrings/debian-keyring.gpg /etc/apt/trusted.gpg.d/ --essential-hook=chroot "$1" sh -c "rm /etc/apt/sources.list && echo 'deb http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb-src http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb http://snapshot.notset.fr/archive/debian/20201105T220209Z/ unstable main' >> /etc/apt/sources.list && apt-get update" --customize-hook=chroot "$1" useradd --no-create-home -d /nonexistent -p "" builduser -s /bin/bash --customize-hook=chroot "$1" env sh -c "apt-get source --only-source -d node-micromatch=4.0.2+repack+~4.0.1-1 && mkdir -p /build/node-micromatch-XEgXbq && dpkg-source --no-check -x /*.dsc /build/node-micromatch-XEgXbq/node-micromatch-4.0.2+repack+-4.0.1 && chown -R builduser:builduser /build/node-micromatch-XEgXbq" --customize-hook=chroot "$1" env --unset=TMPDIR runuser builduser -c "cd /build/node-micromatch-XEgXbq/node-micromatch-4.0.2+repack+-4.0.1 && env DEB_BUILD_OPTIONS="parallel=4" LANG="C.UTF-8" LC_ALL="C.UTF-8" SOURCE_DATE_EPOCH="1604570845" dpkg-buildpackage -uc -a amd64 --build=all" --customize-hook=sync-out /build/node-micromatch-XEgXbq /tmp/node-micromatch-4.0.2+repack+~4.0.1-121ut5ka8 bullseye /dev/null deb http://snapshot.notset.fr/archive/debian/20201105T220209Z unstable main I: automatically chosen mode: root I: chroot architecture amd64 is equal to the host's architecture I: automatically chosen format: tar I: using /tmp/mmdebstrap.QPvOAg4alW as tempdir I: running apt-get update... I: downloading packages with apt... I: extracting archives... I: installing essential packages... I: running --essential-hook in shell: sh -c 'chroot "$1" sh -c "apt-get --yes install fakeroot util-linux"' exec /tmp/mmdebstrap.QPvOAg4alW Reading package lists... Building dependency tree... util-linux is already the newest version (2.36-3+b2). The following NEW packages will be installed: fakeroot libfakeroot 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 134 kB of archives. After this operation, 397 kB of additional disk space will be used. Get:1 http://snapshot.notset.fr/archive/debian/20201105T220209Z unstable/main amd64 libfakeroot amd64 1.25.3-1 [47.0 kB] Get:2 http://snapshot.notset.fr/archive/debian/20201105T220209Z unstable/main amd64 fakeroot amd64 1.25.3-1 [87.0 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 134 kB in 0s (1126 kB/s) Selecting previously unselected package libfakeroot:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 4664 files and directories currently installed.) Preparing to unpack .../libfakeroot_1.25.3-1_amd64.deb ... Unpacking libfakeroot:amd64 (1.25.3-1) ... Selecting previously unselected package fakeroot. Preparing to unpack .../fakeroot_1.25.3-1_amd64.deb ... Unpacking fakeroot (1.25.3-1) ... Setting up libfakeroot:amd64 (1.25.3-1) ... Setting up fakeroot (1.25.3-1) ... update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode Processing triggers for libc-bin (2.31-4) ... I: running special hook: copy-in /usr/share/keyrings/debian-archive-bullseye-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-security-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-stable.gpg /usr/share/keyrings/debian-archive-buster-automatic.gpg /usr/share/keyrings/debian-archive-buster-security-automatic.gpg /usr/share/keyrings/debian-archive-buster-stable.gpg /usr/share/keyrings/debian-archive-keyring.gpg /usr/share/keyrings/debian-archive-removed-keys.gpg /usr/share/keyrings/debian-archive-stretch-automatic.gpg /usr/share/keyrings/debian-archive-stretch-security-automatic.gpg /usr/share/keyrings/debian-archive-stretch-stable.gpg /usr/share/keyrings/debian-ports-archive-keyring-removed.gpg /usr/share/keyrings/debian-ports-archive-keyring.gpg /usr/share/keyrings/debian-keyring.gpg /etc/apt/trusted.gpg.d/ I: running --essential-hook in shell: sh -c 'chroot "$1" sh -c "rm /etc/apt/sources.list && echo 'deb http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb-src http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb http://snapshot.notset.fr/archive/debian/20201105T220209Z/ unstable main' >> /etc/apt/sources.list && apt-get update"' exec /tmp/mmdebstrap.QPvOAg4alW Get:1 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm InRelease [81.6 kB] Hit:2 http://snapshot.notset.fr/archive/debian/20201105T220209Z unstable InRelease Ign:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Ign:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Ign:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Get:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources [11.4 MB] Get:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages [11.1 MB] Fetched 22.6 MB in 19s (1191 kB/s) Reading package lists... I: installing remaining packages inside the chroot... I: running --customize-hook in shell: sh -c 'chroot "$1" useradd --no-create-home -d /nonexistent -p "" builduser -s /bin/bash' exec /tmp/mmdebstrap.QPvOAg4alW I: running --customize-hook in shell: sh -c 'chroot "$1" env sh -c "apt-get source --only-source -d node-micromatch=4.0.2+repack+~4.0.1-1 && mkdir -p /build/node-micromatch-XEgXbq && dpkg-source --no-check -x /*.dsc /build/node-micromatch-XEgXbq/node-micromatch-4.0.2+repack+-4.0.1 && chown -R builduser:builduser /build/node-micromatch-XEgXbq"' exec /tmp/mmdebstrap.QPvOAg4alW Reading package lists... NOTICE: 'node-micromatch' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/js-team/node-micromatch.git Please use: git clone https://salsa.debian.org/js-team/node-micromatch.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 102 kB of source archives. Get:1 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main node-micromatch 4.0.2+repack+~4.0.1-1 (dsc) [2591 B] Get:2 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main node-micromatch 4.0.2+repack+~4.0.1-1 (tar) [5905 B] Get:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main node-micromatch 4.0.2+repack+~4.0.1-1 (tar) [88.0 kB] Get:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main node-micromatch 4.0.2+repack+~4.0.1-1 (diff) [5132 B] Fetched 102 kB in 0s (651 kB/s) Download complete and in download only mode W: Download is performed unsandboxed as root as file 'node-micromatch_4.0.2+repack+~4.0.1-1.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied) dpkg-source: info: extracting node-micromatch in /build/node-micromatch-XEgXbq/node-micromatch-4.0.2+repack+-4.0.1 dpkg-source: info: unpacking node-micromatch_4.0.2+repack+~4.0.1.orig.tar.gz dpkg-source: info: unpacking node-micromatch_4.0.2+repack+~4.0.1.orig-types-micromatch.tar.gz dpkg-source: info: unpacking node-micromatch_4.0.2+repack+~4.0.1-1.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying ignore-failing-tests.patch dpkg-source: info: applying remove-es6-features-for-rollup-1.diff I: running --customize-hook in shell: sh -c 'chroot "$1" env --unset=TMPDIR runuser builduser -c "cd /build/node-micromatch-XEgXbq/node-micromatch-4.0.2+repack+-4.0.1 && env DEB_BUILD_OPTIONS="parallel=4" LANG="C.UTF-8" LC_ALL="C.UTF-8" SOURCE_DATE_EPOCH="1604570845" dpkg-buildpackage -uc -a amd64 --build=all"' exec /tmp/mmdebstrap.QPvOAg4alW dpkg-buildpackage: info: source package node-micromatch dpkg-buildpackage: info: source version 4.0.2+repack+~4.0.1-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Xavier Guimard dpkg-source --before-build . debian/rules clean dh clean dh_auto_clean --buildsystem=nodejs rm -rf ./node_modules/.cache rm -rf types-micromatch/node_modules/.cache Use of uninitialized value $package in concatenation (.) or string at /usr/share/perl5/Debian/Debhelper/Buildsystem/nodejs.pm line 944. dh_clean debian/rules binary-indep dh binary-indep dh_update_autotools_config -i dh_autoreconf -i dh_auto_configure --buildsystem=nodejs -i mkdir node_modules mkdir -p node_modules/\@types ln -s ../../types-micromatch node_modules/\@types/micromatch dh_auto_build --buildsystem=nodejs -i No build command found, searching known files No build command found, searching known files dh_auto_test --buildsystem=nodejs -i ln -s ../. node_modules/micromatch /bin/sh -ex debian/tests/pkg-js/test + mocha -R spec .all() ✓ should throw an error when value is not a string ✓ should return true when all patterns match the given string ✓ should return false when some patterns do not match ✓ should arrayify a string pattern .braceExpand() ✓ should throw an error when arguments are invalid ✓ should expand a brace pattern .braces() ✓ should throw an error when arguments are invalid ✓ should create a regex source string from a brace pattern ✓ should expand a brace pattern .capture() ✓ should return null if no match ✓ should return an empty array if there are no captures ✓ should capture stars ✓ should capture globstars ✓ should capture extglobs ✓ should capture paren groups ✓ should capture star groups ✓ should capture plus groups ✓ should capture optional groups ✓ should capture @ groups ✓ should capture negated groups .contains() errors ✓ should throw an error arguments are invalid patterns ✓ should correctly deal with empty patterns ✓ should return true when the path contains the pattern ✓ should be true when a glob pattern partially matches the path ✓ should return false when the path does not contain the pattern ✓ should match files that contain the given extension ✓ should not match files that do not contain the given extension ✓ should match dotfiles when a dot is explicitly defined in the pattern ✓ should match dotfiles when `dot` or `dotfiles` is set ✓ should not match dotfiles when `dot` or `dotfiles` is not set ✓ should match file paths ✓ should return true when full file paths are matched ✓ should match path segments ✓ should return false when full file paths are not matched ✓ should match paths with leading `./` windows paths ✓ should match with common glob patterns ✓ should match files that contain the given extension ✓ should match dotfiles when `dot` is true ✓ should not match dotfiles when `dot` or `dotfiles` is not set ✓ should match file paths ✓ should return true when full file paths are matched ✓ should match path segments ✓ should return false when full file paths are not matched ✓ should match dotfiles when a dot is explicitly defined in the pattern ✓ should match paths with leading `./` .every() ✓ should return true if every string matches ✓ should return false when not all strings match ✓ should arrayify a string value .isMatch(): error handling: ✓ should throw on bad args alias: ✓ should have the alias .any(...) matching: ✓ should escape plus signs to match string literals ✓ should not escape plus signs that follow brackets ✓ should support stars following brackets ✓ should not escape plus signs that follow parens ✓ should support stars following parens ✓ should not match slashes with single stars ✓ should not match dots with stars by default ✓ should match with non-glob patterns ✓ should match non-leading dots ✓ should match with common glob patterns ✓ should exactly match leading slash ✓ should match files with the given extension ✓ should match wildcards ✓ should match globstars ✓ issue #23 ✓ issue #24 ✓ should match slashes ✓ question marks should not match slashes ✓ should not match dotfiles when `dot` or `dotfiles` are not set ✓ should match dotfiles when `dot` or `dotfiles` is set ✓ should match file paths ✓ should match full file paths ✓ should match paths with leading `./` when pattern has `./` ✓ should match paths with leading `./` errors ✓ should throw an error when value is not a string empty patterns ✓ should throw an error when empty patterns are defined non-globs ✓ should match literal paths dots ✓ should match a dots with dots in the pattern stars (single pattern) ✓ should return true when one of the given patterns matches the string ✓ should return false when the path does not match the pattern ✓ should match a path segment for each single star ✓ should regard non-exclusive double-stars as single stars ✓ should return false when full file paths are not matched stars (multiple patterns) ✓ should return true when any of the patterns match ✓ should return false when none of the patterns match file extensions ✓ should match files that contain the given extension ✓ should not match files that do not contain the given extension dot files ✓ should match dotfiles when a dot is explicitly defined in the pattern ✓ should not match dotfiles when a dot is not defined in the pattern ✓ should match dotfiles when `dot` is set ✓ should not match dotfiles when `dot` is not set dot-slash ✓ should match paths with leading `./` .makeRe() ✓ should throw an error when value is not a string ✓ should create a regex for a glob pattern .match() posix paths ✓ should return an array of matches for a literal string ✓ should support regex logical or ✓ should support regex ranges ✓ should support negation patterns windows paths ✓ should return an array of matches for a literal string ✓ should support regex logical or ✓ should support regex ranges ✓ should support negation patterns .matchKeys() error handling ✓ should throw when the first argument is not an object match object keys ✓ should return a new object with only keys that match the given glob pattern .matcher() errors ✓ should throw an error when arguments are invalid posix paths ✓ should return an array of matches for a literal string ✓ should support regex logical or ✓ should support regex ranges ✓ should support negation patterns posix paths (array of patterns) ✓ should return an array of matches for a literal string ✓ should support regex logical or ✓ should support regex ranges ✓ should support negation patterns backlashes for path separators, on posix ✓ should return an array of matches for a literal string ✓ should support regex logical or ✓ should support regex ranges ✓ should support negation patterns windows paths ✓ should return an array of matches for a literal string ✓ should support regex logical or ✓ should support regex ranges ✓ should support negation patterns .not() posix paths ✓ should return an array of matches for a literal string ✓ should support regex logical or ✓ should support regex ranges ✓ should support globs (*) ✓ should support globstars (**) ✓ should support negation patterns windows paths ✓ should return an array of matches for a literal string ✓ should support regex logical or ✓ should support regex ranges ✓ should support globs (*) ✓ should support globstars (**) ✓ should support negation patterns .parse() ✓ should parse a glob .some() ✓ should return true if any matches are found ✓ should return false if no matches are found ✓ should arrayify a string value bash options and features: bash ✓ should handle "regular globbing": ✓ should match directories: ✓ should use quoted characters as literals: ✓ should support quoted characters ✓ should respect escaped characters ✓ should respect escaped paths/dots: ✓ Pattern from Larry Wall's Configure that caused bash to blow up: ✓ should support character classes ✓ should support basic wildmatch (brackets) features ✓ should support extended slash-matching features ✓ should match literal parens ✓ should match escaped characters ✓ should match brackets ✓ should regard multiple consecutive stars as a single star ✓ none of these should output anything: wildmat ✓ Basic wildmat features ✓ should support recursion bash.spec dotglob ✓ "a/b/.x" should match "**/.x/**" ✓ ".x" should match "**/.x/**" ✓ ".x/" should match "**/.x/**" ✓ ".x/a" should match "**/.x/**" ✓ ".x/a/b" should match "**/.x/**" ✓ ".x/.x" should match "**/.x/**" ✓ "a/.x" should match "**/.x/**" ✓ "a/b/.x/c" should match "**/.x/**" ✓ "a/b/.x/c/d" should match "**/.x/**" ✓ "a/b/.x/c/d/e" should match "**/.x/**" (41ms) ✓ "a/b/.x/" should match "**/.x/**" ✓ "a/.x/b" should match "**/.x/**" ✓ "a/.x/b/.x/c" should not match "**/.x/**" ✓ ".bashrc" should not match "?bashrc" ✓ should match trailing slashes with stars ✓ ".bar.baz/" should match ".*.*/" ✓ ".bar.baz" should match ".*.*" glob ✓ "a/b/.x" should match "**/.x/**" ✓ ".x" should match "**/.x/**" ✓ ".x/" should match "**/.x/**" ✓ ".x/a" should match "**/.x/**" ✓ ".x/a/b" should match "**/.x/**" ✓ ".x/.x" should match "**/.x/**" ✓ "a/.x" should match "**/.x/**" ✓ "a/b/.x/c" should match "**/.x/**" ✓ "a/b/.x/c/d" should match "**/.x/**" ✓ "a/b/.x/c/d/e" should match "**/.x/**" ✓ "a/b/.x/" should match "**/.x/**" ✓ "a/.x/b" should match "**/.x/**" ✓ "a/.x/b/.x/c" should not match "**/.x/**" ✓ "a/c/b" should match "a/*/b" ✓ "a/.d/b" should not match "a/*/b" ✓ "a/./b" should not match "a/*/b" ✓ "a/../b" should not match "a/*/b" ✓ "ab" should match "ab**" ✓ "abcdef" should match "ab**" ✓ "abef" should match "ab**" ✓ "abcfef" should match "ab**" ✓ "ab" should not match "ab***ef" ✓ "abcdef" should match "ab***ef" ✓ "abef" should match "ab***ef" ✓ "abcfef" should match "ab***ef" ✓ ".bashrc" should not match "?bashrc" ✓ "abbc" should not match "ab?bc" ✓ "abc" should not match "ab?bc" ✓ "a.a" should match "[a-d]*.[a-b]" ✓ "a.b" should match "[a-d]*.[a-b]" ✓ "c.a" should match "[a-d]*.[a-b]" ✓ "a.a.a" should match "[a-d]*.[a-b]" ✓ "a.a.a" should match "[a-d]*.[a-b]*.[a-b]" ✓ "a.a" should match "*.[a-b]" ✓ "a.b" should match "*.[a-b]" ✓ "a.a.a" should match "*.[a-b]" ✓ "c.a" should match "*.[a-b]" ✓ "d.a.d" should not match "*.[a-b]" ✓ "a.bb" should not match "*.[a-b]" ✓ "a.ccc" should not match "*.[a-b]" ✓ "c.ccc" should not match "*.[a-b]" ✓ "a.a" should match "*.[a-b]*" ✓ "a.b" should match "*.[a-b]*" ✓ "a.a.a" should match "*.[a-b]*" ✓ "c.a" should match "*.[a-b]*" ✓ "d.a.d" should match "*.[a-b]*" ✓ "d.a.d" should not match "*.[a-b]*.[a-b]*" ✓ "d.a.d" should match "*.[a-d]*.[a-d]*" ✓ "a.bb" should match "*.[a-b]*" ✓ "a.ccc" should not match "*.[a-b]*" ✓ "c.ccc" should not match "*.[a-b]*" ✓ "a.a" should match "*[a-b].[a-b]*" ✓ "a.b" should match "*[a-b].[a-b]*" ✓ "a.a.a" should match "*[a-b].[a-b]*" ✓ "c.a" should not match "*[a-b].[a-b]*" ✓ "d.a.d" should not match "*[a-b].[a-b]*" ✓ "a.bb" should match "*[a-b].[a-b]*" ✓ "a.ccc" should not match "*[a-b].[a-b]*" ✓ "c.ccc" should not match "*[a-b].[a-b]*" ✓ "abd" should match "[a-y]*[^c]" ✓ "abe" should match "[a-y]*[^c]" ✓ "bb" should match "[a-y]*[^c]" ✓ "bcd" should match "[a-y]*[^c]" ✓ "ca" should match "[a-y]*[^c]" ✓ "cb" should match "[a-y]*[^c]" ✓ "dd" should match "[a-y]*[^c]" ✓ "de" should match "[a-y]*[^c]" ✓ "bdir/" should match "[a-y]*[^c]" ✓ "abd" should match "**/*" globstar ✓ "a.js" should match "**/*.js" ✓ "a/a.js" should match "**/*.js" ✓ "a/a/b.js" should match "**/*.js" ✓ "a/b/z.js" should match "a/b/**/*.js" ✓ "a/b/c/z.js" should match "a/b/**/*.js" ✓ "foo.md" should match "**/*.md" ✓ "foo/bar.md" should match "**/*.md" ✓ "foo/bar" should match "foo/**/bar" ✓ "foo/bar" should match "foo/**bar" ✓ "ab/a/d" should match "**/*" ✓ "ab/b" should match "**/*" ✓ "a/b/c/d/a.js" should match "**/*" ✓ "a/b/c.js" should match "**/*" ✓ "a/b/c.txt" should match "**/*" ✓ "a/b/.js/c.txt" should match "**/*" ✓ "a.js" should match "**/*" ✓ "za.js" should match "**/*" ✓ "ab" should match "**/*" ✓ "a.b" should match "**/*" ✓ "foo/" should match "foo/**/" ✓ "foo/bar" should not match "foo/**/" ✓ "foo/bazbar" should not match "foo/**/" ✓ "foo/barbar" should not match "foo/**/" ✓ "foo/bar/baz/qux" should not match "foo/**/" ✓ "foo/bar/baz/qux/" should match "foo/**/" braces - compiled extglob characters ✓ should expand braces (in extglobs) when preceded by an extglob character ✓ should expand braces when preceded by an extglob character sets invalid sets ✓ should handle invalid sets: escaping ✓ should not expand escaped braces ✓ should handle spaces ✓ should handle empty braces ✓ should escape braces when only one value is defined ✓ should not expand braces in sets with es6/bash-like variables ✓ should not expand escaped commas. ✓ should return sets with escaped commas ✓ should not expand escaped braces. ✓ should not expand escaped braces or commas. set expansion ✓ should support sequence brace operators (47ms) ✓ should expand multiple sets ✓ should expand nested sets ✓ should expand not modify non-brace characters commas ✓ should work with leading and trailing commas. spaces ✓ should handle spaces ranges escaping / invalid ranges ✓ should not try to expand ranges with decimals ✓ should escape invalid ranges: ✓ weirdly-formed brace expansions -- fixed in post-bash-3.1 ✓ should not expand quoted strings. ✓ should escaped outer braces in nested non-sets ✓ should escape imbalanced braces positive numeric ranges ✓ should expand numeric ranges negative ranges ✓ should expand ranges with negative numbers alphabetical ranges ✓ should expand alphabetical ranges ✓ should expand multiple ranges: combo ✓ should expand numerical ranges - positive and negative large numbers ✓ should expand large numbers steps > positive ranges ✓ should expand ranges using steps: ✓ should expand positive ranges with negative steps: steps > negative ranges ✓ should expand negative ranges using steps: steps > alphabetical ranges ✓ should expand alpha ranges with steps ✓ should expand alpha ranges with negative steps padding ✓ unwanted zero-padding -- fixed post-bash-4.0 integration ✓ should work with dots in file paths ✓ should expand a complex combination of ranges and sets: ✓ should expand complex sets and ranges in `bash` mode: braces ✓ should handle extglobs in braces ✓ should not match with brace sets when disabled ✓ should not match with brace ranges when disabled ✓ should match with brace sets ✓ should match with brace ranges ✓ should not convert braces inside brackets ✓ should support braces with empty elements ✓ should support braces containing slashes ✓ should support braces with slashes and empty elements ✓ should support braces with escaped parens and stars ✓ should support braces in patterns with globstars ✓ should support globstars enclosed in braces, with slashes and empty elements ✓ should support braces with globstars and empty elements ✓ should support Kleene stars ✓ should support Kleene plus ✓ should support braces ✓ should support regex quantifiers by escaping braces dotfiles file name matching ✓ should not match a dot when the dot is not explicitly defined ✓ should not match leading dots with question marks ✓ should match double dots with double dots ✓ should not match exclusive double or single dots ✓ should match dotfiles when there is a leading dot: ✓ should match dotfiles when there is not a leading dot: ✓ should use negation patterns on dotfiles: ✓ should match dotfiles when `options.dot` is true: ✓ should not match a dot when the dot is not explicitly defined ✓ should match a dot when the dot is explicitly defined ✓ should match dots in root path when glob is prefixed with **/ ✓ should not match dotfiles with single stars by default ✓ should work with dots in the path ✓ should not match dotfiles with globstars by default ✓ should match dotfiles when a leading dot is in the pattern ✓ should not match a dot when the dot is not explicitly defined ✓ should not match leading dots with question marks ✓ should match with double dots multiple directories ✓ should not match a dot when the dot is not explicitly defined options.dot ✓ should match dotfiles when `options.dot` is true ✓ should match dotfiles when `.dot` and `.matchBase` both defined ✓ should work when the path has leading `./` ✓ should not match dotfiles when `options.dot` is false ✓ should not match dotfiles when `.dot` is false and `.matchBase` is true ✓ should not match dotfiles when `.dot` is not defined and a dot is not in the glob pattern extglobs (bash) ✓ should not match empty string iwth "*(0|1|3|5|7|9)" ✓ "*(a|b[)" should not match "*(a|b\[)" ✓ "*(a|b[)" should not match "\*\(a|b\[\)" ✓ "***" should match "\*\*\*" ✓ "-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1" should not match "-*-*-*-*-*-*-12-*-*-*-m-*-*-*" ✓ "-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1" should match "-*-*-*-*-*-*-12-*-*-*-m-*-*-*" ✓ "-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1" should not match "-*-*-*-*-*-*-12-*-*-*-m-*-*-*" ✓ "/dev/udp/129.22.8.102/45" should match "/dev\/@(tcp|udp)\/*\/*" ✓ "/x/y/z" should match "/x/y/z" ✓ "0377" should match "+([0-7])" ✓ "07" should match "+([0-7])" ✓ "09" should not match "+([0-7])" ✓ "1" should match "0|[1-9]*([0-9])" ✓ "12" should match "0|[1-9]*([0-9])" ✓ "123abc" should not match "(a+|b)*" ✓ "123abc" should not match "(a+|b)+" ✓ "123abc" should match "*?(a)bc" ✓ "123abc" should not match "a(b*(foo|bar))d" ✓ "123abc" should not match "ab*(e|f)" ✓ "123abc" should not match "ab**" ✓ "123abc" should not match "ab**(e|f)" ✓ "123abc" should not match "ab**(e|f)g" ✓ "123abc" should not match "ab***ef" ✓ "123abc" should not match "ab*+(e|f)" ✓ "123abc" should not match "ab*d+(e|f)" ✓ "123abc" should not match "ab?*(e|f)" ✓ "12abc" should not match "0|[1-9]*([0-9])" ✓ "137577991" should match "*(0|1|3|5|7|9)" ✓ "2468" should not match "*(0|1|3|5|7|9)" ✓ "?a?b" should match "\??\?b" ✓ "\a\b\c" should not match "abc" ✓ "a" should match "!(*.a|*.b|*.c)" ✓ "a" should not match "!(a)" ✓ "a" should not match "!(a)*" ✓ "a" should match "(a)" ✓ "a" should not match "(b)" ✓ "a" should match "*(a)" ✓ "a" should match "+(a)" ✓ "a" should match "?" ✓ "a" should match "?(a|b)" ✓ "a" should not match "??" ✓ "a" should match "a!(b)*" ✓ "a" should match "a?(a|b)" ✓ "a" should match "a?(x)" ✓ "a" should not match "a??b" ✓ "a" should not match "b?(a|b)" ✓ "a((((b" should match "a(*b" ✓ "a((((b" should not match "a(b" ✓ "a((((b" should not match "a\(b" ✓ "a((b" should match "a(*b" ✓ "a((b" should not match "a(b" ✓ "a((b" should not match "a\(b" ✓ "a(b" should match "a(*b" ✓ "a(b" should match "a(b" ✓ "a\(b" should match "a\(b" ✓ "a(b" should match "a\(b" ✓ "a." should match "!(*.a|*.b|*.c)" ✓ "a." should match "*!(.a|.b|.c)" ✓ "a." should match "*.!(a)" ✓ "a." should match "*.!(a|b|c)" ✓ "a." should not match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "a." should not match "*.+(b|d)" ✓ "a.a" should not match "!(*.[a-b]*)" ✓ "a.a" should not match "!(*.a|*.b|*.c)" ✓ "a.a" should not match "!(*[a-b].[a-b]*)" ✓ "a.a" should not match "!*.(a|b)" ✓ "a.a" should not match "!*.(a|b)*" ✓ "a.a" should match "(a|d).(a|b)*" ✓ "a.a" should match "(b|a).(a)" ✓ "a.a" should match "*!(.a|.b|.c)" ✓ "a.a" should not match "*.!(a)" ✓ "a.a" should not match "*.!(a|b|c)" ✓ "a.a" should match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "a.a" should not match "*.+(b|d)" ✓ "a.a" should match "@(b|a).@(a)" ✓ "a.a.a" should not match "!(*.[a-b]*)" ✓ "a.a.a" should not match "!(*[a-b].[a-b]*)" ✓ "a.a.a" should not match "!*.(a|b)" ✓ "a.a.a" should not match "!*.(a|b)*" ✓ "a.a.a" should match "*.!(a)" ✓ "a.a.a" should not match "*.+(b|d)" ✓ "a.aa.a" should not match "(b|a).(a)" ✓ "a.aa.a" should not match "@(b|a).@(a)" ✓ "a.abcd" should match "!(*.a|*.b|*.c)" ✓ "a.abcd" should not match "!(*.a|*.b|*.c)*" ✓ "a.abcd" should match "*!(*.a|*.b|*.c)*" ✓ "a.abcd" should match "*!(.a|.b|.c)" ✓ "a.abcd" should match "*.!(a|b|c)" ✓ "a.abcd" should not match "*.!(a|b|c)*" ✓ "a.abcd" should match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "a.b" should not match "!(*.*)" ✓ "a.b" should not match "!(*.[a-b]*)" ✓ "a.b" should not match "!(*.a|*.b|*.c)" ✓ "a.b" should not match "!(*[a-b].[a-b]*)" ✓ "a.b" should not match "!*.(a|b)" ✓ "a.b" should not match "!*.(a|b)*" ✓ "a.b" should match "(a|d).(a|b)*" ✓ "a.b" should match "*!(.a|.b|.c)" ✓ "a.b" should match "*.!(a)" ✓ "a.b" should not match "*.!(a|b|c)" ✓ "a.b" should match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "a.b" should match "*.+(b|d)" ✓ "a.bb" should not match "!(*.[a-b]*)" ✓ "a.bb" should not match "!(*[a-b].[a-b]*)" ✓ "a.bb" should match "!*.(a|b)" ✓ "a.bb" should not match "!*.(a|b)*" ✓ "a.bb" should not match "!*.*(a|b)" ✓ "a.bb" should match "(a|d).(a|b)*" ✓ "a.bb" should not match "(b|a).(a)" ✓ "a.bb" should match "*.+(b|d)" ✓ "a.bb" should not match "@(b|a).@(a)" ✓ "a.c" should not match "!(*.a|*.b|*.c)" ✓ "a.c" should match "*!(.a|.b|.c)" ✓ "a.c" should not match "*.!(a|b|c)" ✓ "a.c" should not match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "a.c.d" should match "!(*.a|*.b|*.c)" ✓ "a.c.d" should match "*!(.a|.b|.c)" ✓ "a.c.d" should match "*.!(a|b|c)" ✓ "a.c.d" should not match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "a.ccc" should match "!(*.[a-b]*)" ✓ "a.ccc" should match "!(*[a-b].[a-b]*)" ✓ "a.ccc" should match "!*.(a|b)" ✓ "a.ccc" should match "!*.(a|b)*" ✓ "a.ccc" should not match "*.+(b|d)" ✓ "a.js" should not match "!(*.js)" ✓ "a.js" should match "*!(.js)" ✓ "a.js" should not match "*.!(js)" ✓ "a.js" should not match "a.!(js)" ✓ "a.js" should not match "a.!(js)*" ✓ "a.js.js" should not match "!(*.js)" ✓ "a.js.js" should match "*!(.js)" ✓ "a.js.js" should match "*.!(js)" ✓ "a.js.js" should match "*.*(js).js" ✓ "a.md" should match "!(*.js)" ✓ "a.md" should match "*!(.js)" ✓ "a.md" should match "*.!(js)" ✓ "a.md" should match "a.!(js)" ✓ "a.md" should match "a.!(js)*" ✓ "a.md.js" should not match "*.*(js).js" ✓ "a.txt" should match "a.!(js)" ✓ "a.txt" should match "a.!(js)*" ✓ "a/!(z)" should match "a/!(z)" ✓ "a/b" should match "a/!(z)" ✓ "a/b/c.txt" should not match "*/b/!(*).txt" ✓ "a/b/c.txt" should not match "*/b/!(c).txt" ✓ "a/b/c.txt" should match "*/b/!(cc).txt" ✓ "a/b/cc.txt" should not match "*/b/!(*).txt" ✓ "a/b/cc.txt" should not match "*/b/!(c).txt" ✓ "a/b/cc.txt" should not match "*/b/!(cc).txt" ✓ "a/dir/foo.txt" should match "*/dir/**/!(bar).txt" ✓ "a/z" should not match "a/!(z)" ✓ "a\(b" should not match "a(*b" ✓ "a\(b" should not match "a(b" ✓ "a\z" should match "a\z" ✓ "a\z" should match "a\z" ✓ "a\b" should match "a/b" ✓ "a\z" should match "a\z" ✓ "a\z" should not match "a\z" ✓ "aa" should not match "!(a!(b))" ✓ "aa" should match "!(a)" ✓ "aa" should not match "!(a)*" ✓ "aa" should not match "?" ✓ "aa" should not match "@(a)b" ✓ "aa" should match "a!(b)*" ✓ "aa" should not match "a??b" ✓ "aa.aa" should not match "(b|a).(a)" ✓ "aa.aa" should not match "@(b|a).@(a)" ✓ "aaa" should not match "!(a)*" ✓ "aaa" should match "a!(b)*" ✓ "aaaaaaabababab" should match "*ab" ✓ "aaac" should match "*(@(a))a@(c)" ✓ "aaaz" should match "[a*(]*z" ✓ "aab" should not match "!(a)*" ✓ "aab" should not match "?" ✓ "aab" should not match "??" ✓ "aab" should not match "@(c)b" ✓ "aab" should match "a!(b)*" ✓ "aab" should not match "a??b" ✓ "aac" should match "*(@(a))a@(c)" ✓ "aac" should not match "*(@(a))b@(c)" ✓ "aax" should not match "a!(a*|b)" ✓ "aax" should match "a!(x*|b)" ✓ "aax" should match "a?(a*|b)" ✓ "aaz" should match "[a*(]*z" ✓ "ab" should match "!(*.*)" ✓ "ab" should match "!(a!(b))" ✓ "ab" should not match "!(a)*" ✓ "ab" should match "@(a+|b)*" ✓ "ab" should match "(a+|b)+" ✓ "ab" should not match "*?(a)bc" ✓ "ab" should not match "a!(*(b|B))" ✓ "ab" should not match "a!(@(b|B))" ✓ "aB" should not match "a!(@(b|B))" ✓ "ab" should not match "a!(b)*" ✓ "ab" should not match "a(*b" ✓ "ab" should not match "a(b" ✓ "ab" should not match "a(b*(foo|bar))d" ✓ "ab" should not match "a/b" ✓ "ab" should not match "a\(b" ✓ "ab" should match "ab*(e|f)" ✓ "ab" should match "ab**" ✓ "ab" should match "ab**(e|f)" ✓ "ab" should not match "ab**(e|f)g" ✓ "ab" should not match "ab***ef" ✓ "ab" should not match "ab*+(e|f)" ✓ "ab" should not match "ab*d+(e|f)" ✓ "ab" should not match "ab?*(e|f)" ✓ "ab/cXd/efXg/hi" should match "**/*X*/**/*i" ✓ "ab/cXd/efXg/hi" should match "*/*X*/*/*i" ✓ "ab/cXd/efXg/hi" should match "*X*i" ✓ "ab/cXd/efXg/hi" should match "*Xg*i" ✓ "ab]" should match "a!(@(b|B))" ✓ "abab" should match "(a+|b)*" ✓ "abab" should match "(a+|b)+" ✓ "abab" should not match "*?(a)bc" ✓ "abab" should not match "a(b*(foo|bar))d" ✓ "abab" should not match "ab*(e|f)" ✓ "abab" should match "ab**" ✓ "abab" should match "ab**(e|f)" ✓ "abab" should not match "ab**(e|f)g" ✓ "abab" should not match "ab***ef" ✓ "abab" should not match "ab*+(e|f)" ✓ "abab" should not match "ab*d+(e|f)" ✓ "abab" should not match "ab?*(e|f)" ✓ "abb" should match "!(*.*)" ✓ "abb" should not match "!(a)*" (43ms) ✓ "abb" should not match "a!(b)*" ✓ "abbcd" should match "@(ab|a*(b))*(c)d" ✓ "abc" should not match "\a\b\c" ✓ "aBc" should match "a!(@(b|B))" ✓ "abcd" should match "?@(a|b)*@(c)d" ✓ "abcd" should match "@(ab|a*@(b))*(c)d" ✓ "abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt" should match "**/*a*b*g*n*t" ✓ "abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz" should not match "**/*a*b*g*n*t" ✓ "abcdef" should match "(a+|b)*" ✓ "abcdef" should not match "(a+|b)+" ✓ "abcdef" should not match "*?(a)bc" ✓ "abcdef" should not match "a(b*(foo|bar))d" ✓ "abcdef" should not match "ab*(e|f)" ✓ "abcdef" should match "ab**" ✓ "abcdef" should match "ab**(e|f)" ✓ "abcdef" should not match "ab**(e|f)g" ✓ "abcdef" should match "ab***ef" ✓ "abcdef" should match "ab*+(e|f)" ✓ "abcdef" should match "ab*d+(e|f)" ✓ "abcdef" should not match "ab?*(e|f)" ✓ "abcfef" should match "(a+|b)*" ✓ "abcfef" should not match "(a+|b)+" ✓ "abcfef" should not match "*?(a)bc" ✓ "abcfef" should not match "a(b*(foo|bar))d" ✓ "abcfef" should not match "ab*(e|f)" ✓ "abcfef" should match "ab**" ✓ "abcfef" should match "ab**(e|f)" ✓ "abcfef" should not match "ab**(e|f)g" ✓ "abcfef" should match "ab***ef" ✓ "abcfef" should match "ab*+(e|f)" ✓ "abcfef" should not match "ab*d+(e|f)" ✓ "abcfef" should match "ab?*(e|f)" ✓ "abcfefg" should match "(a+|b)*" ✓ "abcfefg" should not match "(a+|b)+" ✓ "abcfefg" should not match "*?(a)bc" ✓ "abcfefg" should not match "a(b*(foo|bar))d" ✓ "abcfefg" should not match "ab*(e|f)" ✓ "abcfefg" should match "ab**" ✓ "abcfefg" should match "ab**(e|f)" ✓ "abcfefg" should match "ab**(e|f)g" ✓ "abcfefg" should not match "ab***ef" ✓ "abcfefg" should not match "ab*+(e|f)" ✓ "abcfefg" should not match "ab*d+(e|f)" ✓ "abcfefg" should not match "ab?*(e|f)" ✓ "abcx" should match "!([[*])*" ✓ "abcx" should match "+(a|b\[)*" ✓ "abcx" should not match "[a*(]*z" ✓ "abcXdefXghi" should match "*X*i" ✓ "abcz" should match "!([[*])*" ✓ "abcz" should match "+(a|b\[)*" ✓ "abcz" should match "[a*(]*z" ✓ "abd" should match "(a+|b)*" ✓ "abd" should not match "(a+|b)+" ✓ "abd" should not match "*?(a)bc" ✓ "abd" should match "a!(*(b|B))" ✓ "abd" should match "a!(@(b|B))" ✓ "abd" should not match "a!(@(b|B))d" ✓ "abd" should match "a(b*(foo|bar))d" ✓ "abd" should match "a+(b|c)d" ✓ "abd" should match "a[b*(foo|bar)]d" ✓ "abd" should not match "ab*(e|f)" ✓ "abd" should match "ab**" ✓ "abd" should match "ab**(e|f)" ✓ "abd" should not match "ab**(e|f)g" ✓ "abd" should not match "ab***ef" ✓ "abd" should not match "ab*+(e|f)" ✓ "abd" should not match "ab*d+(e|f)" ✓ "abd" should match "ab?*(e|f)" ✓ "abef" should match "(a+|b)*" ✓ "abef" should not match "(a+|b)+" ✓ "abef" should not match "*(a+|b)" ✓ "abef" should not match "*?(a)bc" ✓ "abef" should not match "a(b*(foo|bar))d" ✓ "abef" should match "ab*(e|f)" ✓ "abef" should match "ab**" ✓ "abef" should match "ab**(e|f)" ✓ "abef" should not match "ab**(e|f)g" ✓ "abef" should match "ab***ef" ✓ "abef" should match "ab*+(e|f)" ✓ "abef" should not match "ab*d+(e|f)" ✓ "abef" should match "ab?*(e|f)" ✓ "abz" should not match "a!(*)" ✓ "abz" should match "a!(z)" ✓ "abz" should match "a*!(z)" (55ms) ✓ "abz" should not match "a*(z)" ✓ "abz" should match "a**(z)" ✓ "abz" should match "a*@(z)" ✓ "abz" should not match "a+(z)" ✓ "abz" should not match "a?(z)" ✓ "abz" should not match "a@(z)" ✓ "ac" should not match "!(a)*" ✓ "ac" should match "*(@(a))a@(c)" ✓ "ac" should match "a!(*(b|B))" ✓ "ac" should match "a!(@(b|B))" ✓ "ac" should match "a!(b)*" ✓ "accdef" should match "(a+|b)*" ✓ "accdef" should not match "(a+|b)+" ✓ "accdef" should not match "*?(a)bc" ✓ "accdef" should not match "a(b*(foo|bar))d" ✓ "accdef" should not match "ab*(e|f)" ✓ "accdef" should not match "ab**" ✓ "accdef" should not match "ab**(e|f)" ✓ "accdef" should not match "ab**(e|f)g" ✓ "accdef" should not match "ab***ef" ✓ "accdef" should not match "ab*+(e|f)" ✓ "accdef" should not match "ab*d+(e|f)" ✓ "accdef" should not match "ab?*(e|f)" ✓ "acd" should match "(a+|b)*" ✓ "acd" should not match "(a+|b)+" ✓ "acd" should not match "*?(a)bc" ✓ "acd" should match "@(ab|a*(b))*(c)d" ✓ "acd" should match "a!(*(b|B))" ✓ "acd" should match "a!(@(b|B))" ✓ "acd" should match "a!(@(b|B))d" ✓ "acd" should not match "a(b*(foo|bar))d" ✓ "acd" should match "a+(b|c)d" ✓ "acd" should not match "a[b*(foo|bar)]d" ✓ "acd" should not match "ab*(e|f)" ✓ "acd" should not match "ab**" ✓ "acd" should not match "ab**(e|f)" ✓ "acd" should not match "ab**(e|f)g" ✓ "acd" should not match "ab***ef" ✓ "acd" should not match "ab*+(e|f)" ✓ "acd" should not match "ab*d+(e|f)" ✓ "acd" should not match "ab?*(e|f)" ✓ "ax" should match "?(a*|b)" ✓ "ax" should not match "a?(b*)" ✓ "axz" should not match "a+(z)" ✓ "az" should not match "a!(*)" ✓ "az" should not match "a!(z)" ✓ "az" should match "a*!(z)" ✓ "az" should match "a*(z)" ✓ "az" should match "a**(z)" ✓ "az" should match "a*@(z)" ✓ "az" should match "a+(z)" ✓ "az" should match "a?(z)" ✓ "az" should match "a@(z)" ✓ "az" should not match "a\z" ✓ "az" should not match "a\z" ✓ "b" should match "!(a)*" ✓ "b" should match "(a+|b)*" ✓ "b" should not match "a!(b)*" ✓ "b.a" should match "(b|a).(a)" ✓ "b.a" should match "@(b|a).@(a)" ✓ "b/a" should not match "!(b/a)" ✓ "b/b" should match "!(b/a)" ✓ "b/c" should match "!(b/a)" ✓ "b/c" should not match "b/!(c)" ✓ "b/c" should match "b/!(cc)" ✓ "b/c.txt" should not match "b/!(c).txt" ✓ "b/c.txt" should match "b/!(cc).txt" ✓ "b/cc" should match "b/!(c)" ✓ "b/cc" should not match "b/!(cc)" ✓ "b/cc.txt" should not match "b/!(c).txt" ✓ "b/cc.txt" should not match "b/!(cc).txt" ✓ "b/ccc" should match "b/!(c)" ✓ "ba" should match "!(a!(b))" ✓ "ba" should match "b?(a|b)" ✓ "baaac" should not match "*(@(a))a@(c)" ✓ "bar" should match "!(foo)" ✓ "bar" should match "!(foo)*" ✓ "bar" should match "!(foo)b*" ✓ "bar" should match "*(!(foo))" ✓ "baz" should match "!(foo)*" ✓ "baz" should match "!(foo)b*" ✓ "baz" should match "*(!(foo))" ✓ "bb" should match "!(a!(b))" ✓ "bb" should match "!(a)*" ✓ "bb" should not match "a!(b)*" ✓ "bb" should not match "a?(a|b)" ✓ "bbc" should match "!([[*])*" ✓ "bbc" should not match "+(a|b\[)*" ✓ "bbc" should not match "[a*(]*z" ✓ "bz" should not match "a+(z)" ✓ "c" should not match "*(@(a))a@(c)" ✓ "c.a" should not match "!(*.[a-b]*)" ✓ "c.a" should match "!(*[a-b].[a-b]*)" ✓ "c.a" should not match "!*.(a|b)" ✓ "c.a" should not match "!*.(a|b)*" ✓ "c.a" should not match "(b|a).(a)" ✓ "c.a" should not match "*.!(a)" ✓ "c.a" should not match "*.+(b|d)" ✓ "c.a" should not match "@(b|a).@(a)" ✓ "c.c" should not match "!(*.a|*.b|*.c)" ✓ "c.c" should match "*!(.a|.b|.c)" ✓ "c.c" should not match "*.!(a|b|c)" ✓ "c.c" should not match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "c.ccc" should match "!(*.[a-b]*)" ✓ "c.ccc" should match "!(*[a-b].[a-b]*)" ✓ "c.js" should not match "!(*.js)" ✓ "c.js" should match "*!(.js)" ✓ "c.js" should not match "*.!(js)" ✓ "c/a/v" should match "c/!(z)/v" ✓ "c/a/v" should not match "c/*(z)/v" ✓ "c/a/v" should not match "c/+(z)/v" ✓ "c/a/v" should not match "c/@(z)/v" ✓ "c/z/v" should not match "*(z)" ✓ "c/z/v" should not match "+(z)" ✓ "c/z/v" should not match "?(z)" ✓ "c/z/v" should not match "c/!(z)/v" ✓ "c/z/v" should match "c/*(z)/v" ✓ "c/z/v" should match "c/+(z)/v" ✓ "c/z/v" should match "c/@(z)/v" ✓ "c/z/v" should match "c/z/v" ✓ "cc.a" should not match "(b|a).(a)" ✓ "cc.a" should not match "@(b|a).@(a)" ✓ "ccc" should match "!(a)*" ✓ "ccc" should not match "a!(b)*" ✓ "cow" should match "!(*.*)" ✓ "cow" should not match "!(*.*)." ✓ "cow" should not match ".!(*.*)" ✓ "cz" should not match "a!(*)" ✓ "cz" should not match "a!(z)" ✓ "cz" should not match "a*!(z)" ✓ "cz" should not match "a*(z)" ✓ "cz" should not match "a**(z)" ✓ "cz" should not match "a*@(z)" ✓ "cz" should not match "a+(z)" ✓ "cz" should not match "a?(z)" ✓ "cz" should not match "a@(z)" ✓ "d.a.d" should not match "!(*.[a-b]*)" ✓ "d.a.d" should match "!(*[a-b].[a-b]*)" ✓ "d.a.d" should not match "!*.(a|b)*" ✓ "d.a.d" should match "!*.*(a|b)" ✓ "d.a.d" should not match "!*.{a,b}*" ✓ "d.a.d" should match "*.!(a)" ✓ "d.a.d" should match "*.+(b|d)" ✓ "d.d" should match "!(*.a|*.b|*.c)" ✓ "d.d" should match "*!(.a|.b|.c)" ✓ "d.d" should match "*.!(a|b|c)" ✓ "d.d" should not match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "d.js.d" should match "!(*.js)" ✓ "d.js.d" should match "*!(.js)" ✓ "d.js.d" should match "*.!(js)" ✓ "dd.aa.d" should not match "(b|a).(a)" ✓ "dd.aa.d" should not match "@(b|a).@(a)" ✓ "def" should not match "()ef" ✓ "e.e" should match "!(*.a|*.b|*.c)" ✓ "e.e" should match "*!(.a|.b|.c)" ✓ "e.e" should match "*.!(a|b|c)" ✓ "e.e" should not match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "ef" should match "()ef" ✓ "effgz" should match "@(b+(c)d|e*(f)g?|?(h)i@(j|k))" ✓ "efgz" should match "@(b+(c)d|e*(f)g?|?(h)i@(j|k))" ✓ "egz" should match "@(b+(c)d|e*(f)g?|?(h)i@(j|k))" ✓ "egz" should not match "@(b+(c)d|e+(f)g?|?(h)i@(j|k))" ✓ "egzefffgzbcdij" should match "*(b+(c)d|e*(f)g?|?(h)i@(j|k))" ✓ "f" should not match "!(f!(o))" ✓ "f" should match "!(f(o))" ✓ "f" should not match "!(f)" ✓ "f" should not match "*(!(f))" ✓ "f" should not match "+(!(f))" ✓ "f.a" should not match "!(*.a|*.b|*.c)" ✓ "f.a" should match "*!(.a|.b|.c)" ✓ "f.a" should not match "*.!(a|b|c)" ✓ "f.f" should match "!(*.a|*.b|*.c)" ✓ "f.f" should match "*!(.a|.b|.c)" ✓ "f.f" should match "*.!(a|b|c)" ✓ "f.f" should not match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "fa" should not match "!(f!(o))" ✓ "fa" should match "!(f(o))" ✓ "fb" should not match "!(f!(o))" ✓ "fb" should match "!(f(o))" ✓ "fff" should match "!(f)" ✓ "fff" should match "*(!(f))" ✓ "fff" should match "+(!(f))" ✓ "fffooofoooooffoofffooofff" should match "*(*(f)*(o))" ✓ "ffo" should match "*(f*(o))" ✓ "file.C" should not match "*.c?(c)" ✓ "file.c" should match "*.c?(c)" ✓ "file.cc" should match "*.c?(c)" ✓ "file.ccc" should not match "*.c?(c)" ✓ "fo" should match "!(f!(o))" ✓ "fo" should not match "!(f(o))" ✓ "fofo" should match "*(f*(o))" ✓ "fofoofoofofoo" should match "*(fo|foo)" ✓ "fofoofoofofoo" should match "*(fo|foo)" ✓ "foo" should match "!(!(foo))" ✓ "foo" should match "!(f)" ✓ "foo" should not match "!(foo)" ✓ "foo" should not match "!(foo)*" ✓ "foo" should not match "!(foo)*" ✓ "foo" should not match "!(foo)+" ✓ "foo" should not match "!(foo)b*" ✓ "foo" should match "!(x)" ✓ "foo" should match "!(x)*" ✓ "foo" should match "*" ✓ "foo" should match "*(!(f))" ✓ "foo" should not match "*(!(foo))" ✓ "foo" should not match "*(@(a))a@(c)" ✓ "foo" should match "*(@(foo))" ✓ "foo" should not match "*(a|b\[)" ✓ "foo" should match "*(a|b\[)|f*" ✓ "foo" should match "@(*(a|b\[)|f*)" ✓ "foo" should not match "*/*/*" ✓ "foo" should not match "*f" ✓ "foo" should match "*foo*" ✓ "foo" should match "+(!(f))" ✓ "foo" should not match "??" ✓ "foo" should match "???" ✓ "foo" should not match "bar" ✓ "foo" should match "f*" ✓ "foo" should not match "fo" ✓ "foo" should match "foo" ✓ "foo" should match "{*(a|b\[),f*}" ✓ "foo*" should match "foo\*" ✓ "foo*bar" should match "foo\*bar" ✓ "foo.js" should not match "!(foo).js" ✓ "foo.js.js" should match "*.!(js)" ✓ "foo.js.js" should not match "*.!(js)*" ✓ "foo.js.js" should not match "*.!(js)*.!(js)" ✓ "foo.js.js" should not match "*.!(js)+" ✓ "foo.txt" should match "**/!(bar).txt" ✓ "foo/bar" should not match "*/*/*" ✓ "foo/bar" should match "foo/!(foo)" ✓ "foo/bar" should match "foo/*" ✓ "foo/bar" should match "foo/bar" ✓ "foo/bar" should not match "foo?bar" ✓ "foo/bar" should match "foo[/]bar" ✓ "foo/bar/baz.jsx" should match "foo/bar/**/*.+(js|jsx)" ✓ "foo/bar/baz.jsx" should match "foo/bar/*.+(js|jsx)" ✓ "foo/bb/aa/rr" should match "**/**/**" ✓ "foo/bb/aa/rr" should match "*/*/*" ✓ "foo/bba/arr" should match "*/*/*" ✓ "foo/bba/arr" should match "foo*" ✓ "foo/bba/arr" should match "foo**" ✓ "foo/bba/arr" should match "foo/*" ✓ "foo/bba/arr" should match "foo/**" ✓ "foo/bba/arr" should match "foo/**arr" ✓ "foo/bba/arr" should not match "foo/**z" ✓ "foo/bba/arr" should match "foo/*arr" ✓ "foo/bba/arr" should not match "foo/*z" ✓ "foob" should not match "!(foo)b*" ✓ "foob" should not match "(foo)bb" ✓ "foobar" should match "!(foo)" ✓ "foobar" should not match "!(foo)*" ✓ "foobar" should not match "!(foo)*" ✓ "foobar" should not match "!(foo)b*" ✓ "foobar" should match "*(!(foo))" ✓ "foobar" should match "*ob*a*r*" ✓ "foobar" should match "foo\*bar" ✓ "foobb" should not match "!(foo)b*" ✓ "foobb" should match "(foo)bb" ✓ "(foo)bb" should match "\(foo\)bb" ✓ "foofoofo" should match "@(foo|f|fo)*(f|of+(o))" ✓ "foofoofo" should match "@(foo|f|fo)*(f|of+(o))" ✓ "fooofoofofooo" should match "*(f*(o))" ✓ "foooofo" should match "*(f*(o))" ✓ "foooofof" should match "*(f*(o))" ✓ "foooofof" should not match "*(f+(o))" ✓ "foooofofx" should not match "*(f*(o))" ✓ "foooxfooxfoxfooox" should match "*(f*(o)x)" ✓ "foooxfooxfxfooox" should match "*(f*(o)x)" ✓ "foooxfooxofoxfooox" should not match "*(f*(o)x)" ✓ "foot" should match "@(!(z*)|*x)" ✓ "foox" should match "@(!(z*)|*x)" ✓ "fz" should not match "*(z)" ✓ "fz" should not match "+(z)" ✓ "fz" should not match "?(z)" ✓ "moo.cow" should not match "!(moo).!(cow)" ✓ "moo.cow" should not match "!(*).!(*)" ✓ "moo.cow" should not match "!(*.*).!(*.*)" ✓ "mad.moo.cow" should not match "!(*.*).!(*.*)" ✓ "mad.moo.cow" should not match ".!(*.*)" ✓ "Makefile" should match "!(*.c|*.h|Makefile.in|config*|README)" ✓ "Makefile.in" should not match "!(*.c|*.h|Makefile.in|config*|README)" ✓ "moo" should match "!(*.*)" ✓ "moo" should not match "!(*.*)." ✓ "moo" should not match ".!(*.*)" ✓ "moo.cow" should not match "!(*.*)" ✓ "moo.cow" should not match "!(*.*)." ✓ "moo.cow" should not match ".!(*.*)" ✓ "mucca.pazza" should not match "mu!(*(c))?.pa!(*(z))?" ✓ "ofoofo" should match "*(of+(o))" ✓ "ofoofo" should match "*(of+(o)|f)" ✓ "ofooofoofofooo" should not match "*(f*(o))" ✓ "ofoooxoofxo" should match "*(*(of*(o)x)o)" ✓ "ofoooxoofxoofoooxoofxo" should match "*(*(of*(o)x)o)" ✓ "ofoooxoofxoofoooxoofxofo" should not match "*(*(of*(o)x)o)" ✓ "ofoooxoofxoofoooxoofxoo" should match "*(*(of*(o)x)o)" ✓ "ofoooxoofxoofoooxoofxooofxofxo" should match "*(*(of*(o)x)o)" ✓ "ofxoofxo" should match "*(*(of*(o)x)o)" ✓ "oofooofo" should match "*(of|oof+(o))" ✓ "ooo" should match "!(f)" ✓ "ooo" should match "*(!(f))" ✓ "ooo" should match "+(!(f))" ✓ "oxfoxfox" should not match "*(oxf+(ox))" ✓ "oxfoxoxfox" should match "*(oxf+(ox))" ✓ "para" should match "para*([0-9])" ✓ "para" should not match "para+([0-9])" ✓ "para.38" should match "para!(*.[00-09])" ✓ "para.graph" should match "para!(*.[0-9])" ✓ "para13829383746592" should match "para*([0-9])" ✓ "para381" should not match "para?([345]|99)1" ✓ "para39" should match "para!(*.[0-9])" ✓ "para987346523" should match "para+([0-9])" ✓ "para991" should match "para?([345]|99)1" ✓ "paragraph" should match "para!(*.[0-9])" ✓ "paragraph" should not match "para*([0-9])" ✓ "paragraph" should match "para@(chute|graph)" ✓ "paramour" should not match "para@(chute|graph)" ✓ "parse.y" should match "!(*.c|*.h|Makefile.in|config*|README)" ✓ "shell.c" should not match "!(*.c|*.h|Makefile.in|config*|README)" ✓ "VMS.FILE;" should not match "*\;[1-9]*([0-9])" ✓ "VMS.FILE;0" should not match "*\;[1-9]*([0-9])" ✓ "VMS.FILE;9" should match "*\;[1-9]*([0-9])" ✓ "VMS.FILE;1" should match "*\;[1-9]*([0-9])" ✓ "VMS.FILE;1" should match "*;[1-9]*([0-9])" ✓ "VMS.FILE;139" should match "*\;[1-9]*([0-9])" ✓ "VMS.FILE;1N" should not match "*\;[1-9]*([0-9])" ✓ "xfoooofof" should not match "*(f*(o))" ✓ "XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1" should match "XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*" ✓ "XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1" should not match "XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*" ✓ "z" should match "*(z)" ✓ "z" should match "+(z)" ✓ "z" should match "?(z)" ✓ "zf" should not match "*(z)" ✓ "zf" should not match "+(z)" ✓ "zf" should not match "?(z)" ✓ "zoot" should not match "@(!(z*)|*x)" ✓ "zoox" should match "@(!(z*)|*x)" ✓ "zz" should not match "(a+|b)*" extglobs (minimatch) ✓ should not match empty string with "*(0|1|3|5|7|9)" ✓ "*(a|b[)" should not match "*(a|b\[)" ✓ "*(a|b[)" should not match "\*\(a|b\[\)" ✓ "***" should match "\*\*\*" ✓ "-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1" should not match "-*-*-*-*-*-*-12-*-*-*-m-*-*-*" ✓ "-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1" should match "-*-*-*-*-*-*-12-*-*-*-m-*-*-*" ✓ "-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1" should not match "-*-*-*-*-*-*-12-*-*-*-m-*-*-*" ✓ "/dev/udp/129.22.8.102/45" should not match "/dev\/@(tcp|udp)\/*\/*" ✓ "/x/y/z" should match "/x/y/z" ✓ "0377" should match "+([0-7])" ✓ "07" should match "+([0-7])" ✓ "09" should not match "+([0-7])" ✓ "1" should match "0|[1-9]*([0-9])" ✓ "12" should match "0|[1-9]*([0-9])" ✓ "123abc" should not match "(a+|b)*" ✓ "123abc" should not match "(a+|b)+" ✓ "123abc" should match "*?(a)bc" ✓ "123abc" should not match "a(b*(foo|bar))d" ✓ "123abc" should not match "ab*(e|f)" ✓ "123abc" should not match "ab**" ✓ "123abc" should not match "ab**(e|f)" ✓ "123abc" should not match "ab**(e|f)g" ✓ "123abc" should not match "ab***ef" ✓ "123abc" should not match "ab*+(e|f)" ✓ "123abc" should not match "ab*d+(e|f)" ✓ "123abc" should not match "ab?*(e|f)" ✓ "12abc" should not match "0|[1-9]*([0-9])" ✓ "137577991" should match "*(0|1|3|5|7|9)" ✓ "2468" should not match "*(0|1|3|5|7|9)" ✓ "?a?b" should match "\??\?b" ✓ "\a\b\c" should not match "abc" ✓ "a" should match "!(*.a|*.b|*.c)" ✓ "a" should not match "!(a)" ✓ "a" should not match "!(a)*" ✓ "a" should match "(a)" ✓ "a" should not match "(b)" ✓ "a" should match "*(a)" ✓ "a" should match "+(a)" ✓ "a" should match "?" ✓ "a" should match "?(a|b)" ✓ "a" should not match "??" ✓ "a" should match "a!(b)*" ✓ "a" should match "a?(a|b)" ✓ "a" should match "a?(x)" ✓ "a" should not match "a??b" ✓ "a" should not match "b?(a|b)" ✓ "a((((b" should match "a(*b" ✓ "a((((b" should not match "a(b" ✓ "a((((b" should not match "a\(b" ✓ "a((b" should match "a(*b" ✓ "a((b" should not match "a(b" ✓ "a((b" should not match "a\(b" ✓ "a(b" should match "a(*b" ✓ "a(b" should match "a(b" ✓ "a(b" should match "a\(b" ✓ "a." should match "!(*.a|*.b|*.c)" ✓ "a." should match "*!(.a|.b|.c)" ✓ "a." should match "*.!(a)" ✓ "a." should match "*.!(a|b|c)" ✓ "a." should not match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "a." should not match "*.+(b|d)" ✓ "a.a" should not match "!(*.[a-b]*)" ✓ "a.a" should not match "!(*.a|*.b|*.c)" ✓ "a.a" should not match "!(*[a-b].[a-b]*)" ✓ "a.a" should not match "!*.(a|b)" ✓ "a.a" should not match "!*.(a|b)*" ✓ "a.a" should match "(a|d).(a|b)*" ✓ "a.a" should match "(b|a).(a)" ✓ "a.a" should match "*!(.a|.b|.c)" ✓ "a.a" should not match "*.!(a)" ✓ "a.a" should not match "*.!(a|b|c)" ✓ "a.a" should match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "a.a" should not match "*.+(b|d)" ✓ "a.a" should match "@(b|a).@(a)" ✓ "a.a.a" should not match "!(*.[a-b]*)" ✓ "a.a.a" should not match "!(*[a-b].[a-b]*)" ✓ "a.a.a" should not match "!*.(a|b)" ✓ "a.a.a" should not match "!*.(a|b)*" ✓ "a.a.a" should match "*.!(a)" ✓ "a.a.a" should not match "*.+(b|d)" ✓ "a.aa.a" should not match "(b|a).(a)" ✓ "a.aa.a" should not match "@(b|a).@(a)" ✓ "a.abcd" should match "!(*.a|*.b|*.c)" ✓ "a.abcd" should not match "!(*.a|*.b|*.c)*" ✓ "a.abcd" should match "*!(*.a|*.b|*.c)*" ✓ "a.abcd" should match "*!(.a|.b|.c)" ✓ "a.abcd" should match "*.!(a|b|c)" ✓ "a.abcd" should not match "*.!(a|b|c)*" ✓ "a.abcd" should match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "a.b" should not match "!(*.*)" ✓ "a.b" should not match "!(*.[a-b]*)" ✓ "a.b" should not match "!(*.a|*.b|*.c)" ✓ "a.b" should not match "!(*[a-b].[a-b]*)" ✓ "a.b" should not match "!*.(a|b)" ✓ "a.b" should not match "!*.(a|b)*" ✓ "a.b" should match "(a|d).(a|b)*" ✓ "a.b" should match "*!(.a|.b|.c)" ✓ "a.b" should match "*.!(a)" ✓ "a.b" should not match "*.!(a|b|c)" ✓ "a.b" should match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "a.b" should match "*.+(b|d)" ✓ "a.bb" should not match "!(*.[a-b]*)" ✓ "a.bb" should not match "!(*[a-b].[a-b]*)" ✓ "a.bb" should match "!*.(a|b)" ✓ "a.bb" should not match "!*.(a|b)*" ✓ "a.bb" should not match "!*.*(a|b)" ✓ "a.bb" should match "(a|d).(a|b)*" ✓ "a.bb" should not match "(b|a).(a)" ✓ "a.bb" should match "*.+(b|d)" ✓ "a.bb" should not match "@(b|a).@(a)" ✓ "a.c" should not match "!(*.a|*.b|*.c)" ✓ "a.c" should match "*!(.a|.b|.c)" ✓ "a.c" should not match "*.!(a|b|c)" ✓ "a.c" should not match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "a.c.d" should match "!(*.a|*.b|*.c)" ✓ "a.c.d" should match "*!(.a|.b|.c)" ✓ "a.c.d" should match "*.!(a|b|c)" ✓ "a.c.d" should not match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "a.ccc" should match "!(*.[a-b]*)" ✓ "a.ccc" should match "!(*[a-b].[a-b]*)" ✓ "a.ccc" should match "!*.(a|b)" ✓ "a.ccc" should match "!*.(a|b)*" ✓ "a.ccc" should not match "*.+(b|d)" ✓ "a.js" should not match "!(*.js)" ✓ "a.js" should match "*!(.js)" ✓ "a.js" should not match "*.!(js)" ✓ "a.js" should not match "a.!(js)" ✓ "a.js" should not match "a.!(js)*" ✓ "a.js.js" should not match "!(*.js)" ✓ "a.js.js" should match "*!(.js)" ✓ "a.js.js" should match "*.!(js)" ✓ "a.js.js" should match "*.*(js).js" ✓ "a.md" should match "!(*.js)" ✓ "a.md" should match "*!(.js)" ✓ "a.md" should match "*.!(js)" ✓ "a.md" should match "a.!(js)" ✓ "a.md" should match "a.!(js)*" ✓ "a.md.js" should not match "*.*(js).js" ✓ "a.txt" should match "a.!(js)" ✓ "a.txt" should match "a.!(js)*" ✓ "a/!(z)" should match "a/!(z)" ✓ "a/b" should match "a/!(z)" ✓ "a/b/c.txt" should not match "*/b/!(*).txt" ✓ "a/b/c.txt" should not match "*/b/!(c).txt" ✓ "a/b/c.txt" should match "*/b/!(cc).txt" ✓ "a/b/cc.txt" should not match "*/b/!(*).txt" ✓ "a/b/cc.txt" should not match "*/b/!(c).txt" ✓ "a/b/cc.txt" should not match "*/b/!(cc).txt" ✓ "a/dir/foo.txt" should match "*/dir/**/!(bar).txt" ✓ "a/z" should not match "a/!(z)" ✓ "a\(b" should not match "a(*b" ✓ "a\(b" should not match "a(b" ✓ "a\z" should match "a\z" ✓ "a\z" should match "a\z" ✓ "a\b" should match "a/b" ✓ "a\z" should match "a\z" ✓ "a\z" should not match "a\z" ✓ "aa" should not match "!(a!(b))" ✓ "aa" should match "!(a)" ✓ "aa" should not match "!(a)*" ✓ "aa" should not match "?" ✓ "aa" should not match "@(a)b" ✓ "aa" should match "a!(b)*" ✓ "aa" should not match "a??b" ✓ "aa.aa" should not match "(b|a).(a)" ✓ "aa.aa" should not match "@(b|a).@(a)" ✓ "aaa" should not match "!(a)*" ✓ "aaa" should match "a!(b)*" ✓ "aaaaaaabababab" should match "*ab" ✓ "aaac" should match "*(@(a))a@(c)" ✓ "aaaz" should match "[a*(]*z" ✓ "aab" should not match "!(a)*" ✓ "aab" should not match "?" ✓ "aab" should not match "??" ✓ "aab" should not match "@(c)b" ✓ "aab" should match "a!(b)*" ✓ "aab" should not match "a??b" ✓ "aac" should match "*(@(a))a@(c)" ✓ "aac" should not match "*(@(a))b@(c)" ✓ "aax" should not match "a!(a*|b)" ✓ "aax" should match "a!(x*|b)" ✓ "aax" should match "a?(a*|b)" ✓ "aaz" should match "[a*(]*z" ✓ "ab" should match "!(*.*)" ✓ "ab" should match "!(a!(b))" (38ms) ✓ "ab" should not match "!(a)*" ✓ "ab" should match "(a+|b)*" ✓ "ab" should match "(a+|b)+" ✓ "ab" should not match "*?(a)bc" ✓ "ab" should not match "a!(*(b|B))" ✓ "ab" should not match "a!(@(b|B))" ✓ "aB" should not match "a!(@(b|B))" ✓ "ab" should not match "a!(b)*" ✓ "ab" should not match "a(*b" ✓ "ab" should not match "a(b" ✓ "ab" should not match "a(b*(foo|bar))d" ✓ "ab" should not match "a/b" ✓ "ab" should not match "a\(b" ✓ "ab" should match "ab*(e|f)" ✓ "ab" should match "ab**" ✓ "ab" should match "ab**(e|f)" ✓ "ab" should not match "ab**(e|f)g" ✓ "ab" should not match "ab***ef" ✓ "ab" should not match "ab*+(e|f)" ✓ "ab" should not match "ab*d+(e|f)" ✓ "ab" should not match "ab?*(e|f)" ✓ "ab/cXd/efXg/hi" should match "**/*X*/**/*i" ✓ "ab/cXd/efXg/hi" should match "*/*X*/*/*i" ✓ "ab/cXd/efXg/hi" should not match "*X*i" ✓ "ab/cXd/efXg/hi" should not match "*Xg*i" ✓ "ab]" should match "a!(@(b|B))" ✓ "abab" should match "(a+|b)*" ✓ "abab" should match "(a+|b)+" ✓ "abab" should not match "*?(a)bc" ✓ "abab" should not match "a(b*(foo|bar))d" ✓ "abab" should not match "ab*(e|f)" ✓ "abab" should match "ab**" ✓ "abab" should match "ab**(e|f)" ✓ "abab" should not match "ab**(e|f)g" ✓ "abab" should not match "ab***ef" ✓ "abab" should not match "ab*+(e|f)" ✓ "abab" should not match "ab*d+(e|f)" ✓ "abab" should not match "ab?*(e|f)" ✓ "abb" should match "!(*.*)" ✓ "abb" should not match "!(a)*" ✓ "abb" should not match "a!(b)*" ✓ "abbcd" should match "@(ab|a*(b))*(c)d" ✓ "abc" should not match "\a\b\c" ✓ "aBc" should match "a!(@(b|B))" ✓ "abcd" should match "?@(a|b)*@(c)d" ✓ "abcd" should match "@(ab|a*@(b))*(c)d" ✓ "abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt" should match "**/*a*b*g*n*t" ✓ "abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz" should not match "**/*a*b*g*n*t" ✓ "abcdef" should match "(a+|b)*" ✓ "abcdef" should not match "(a+|b)+" ✓ "abcdef" should not match "*?(a)bc" ✓ "abcdef" should not match "a(b*(foo|bar))d" ✓ "abcdef" should not match "ab*(e|f)" ✓ "abcdef" should match "ab**" ✓ "abcdef" should match "ab**(e|f)" ✓ "abcdef" should not match "ab**(e|f)g" ✓ "abcdef" should match "ab***ef" ✓ "abcdef" should match "ab*+(e|f)" ✓ "abcdef" should match "ab*d+(e|f)" ✓ "abcdef" should not match "ab?*(e|f)" ✓ "abcfef" should match "(a+|b)*" ✓ "abcfef" should not match "(a+|b)+" ✓ "abcfef" should not match "*?(a)bc" ✓ "abcfef" should not match "a(b*(foo|bar))d" ✓ "abcfef" should not match "ab*(e|f)" ✓ "abcfef" should match "ab**" ✓ "abcfef" should match "ab**(e|f)" ✓ "abcfef" should not match "ab**(e|f)g" ✓ "abcfef" should match "ab***ef" ✓ "abcfef" should match "ab*+(e|f)" ✓ "abcfef" should not match "ab*d+(e|f)" ✓ "abcfef" should match "ab?*(e|f)" ✓ "abcfefg" should match "(a+|b)*" ✓ "abcfefg" should not match "(a+|b)+" ✓ "abcfefg" should not match "*?(a)bc" ✓ "abcfefg" should not match "a(b*(foo|bar))d" ✓ "abcfefg" should not match "ab*(e|f)" ✓ "abcfefg" should match "ab**" ✓ "abcfefg" should match "ab**(e|f)" ✓ "abcfefg" should match "ab**(e|f)g" ✓ "abcfefg" should not match "ab***ef" ✓ "abcfefg" should not match "ab*+(e|f)" ✓ "abcfefg" should not match "ab*d+(e|f)" ✓ "abcfefg" should not match "ab?*(e|f)" ✓ "abcx" should match "!([[*])*" ✓ "abcx" should match "+(a|b\[)*" ✓ "abcx" should not match "[a*(]*z" ✓ "abcXdefXghi" should match "*X*i" ✓ "abcz" should match "!([[*])*" ✓ "abcz" should match "+(a|b\[)*" ✓ "abcz" should match "[a*(]*z" ✓ "abd" should match "(a+|b)*" ✓ "abd" should not match "(a+|b)+" ✓ "abd" should not match "*?(a)bc" ✓ "abd" should match "a!(*(b|B))" ✓ "abd" should match "a!(@(b|B))" ✓ "abd" should not match "a!(@(b|B))d" ✓ "abd" should match "a(b*(foo|bar))d" ✓ "abd" should match "a+(b|c)d" ✓ "abd" should match "a[b*(foo|bar)]d" ✓ "abd" should not match "ab*(e|f)" ✓ "abd" should match "ab**" ✓ "abd" should match "ab**(e|f)" ✓ "abd" should not match "ab**(e|f)g" ✓ "abd" should not match "ab***ef" ✓ "abd" should not match "ab*+(e|f)" ✓ "abd" should not match "ab*d+(e|f)" ✓ "abd" should match "ab?*(e|f)" ✓ "abef" should match "(a+|b)*" ✓ "abef" should not match "(a+|b)+" ✓ "abef" should not match "*(a+|b)" ✓ "abef" should not match "*?(a)bc" ✓ "abef" should not match "a(b*(foo|bar))d" ✓ "abef" should match "ab*(e|f)" ✓ "abef" should match "ab**" ✓ "abef" should match "ab**(e|f)" ✓ "abef" should not match "ab**(e|f)g" ✓ "abef" should match "ab***ef" ✓ "abef" should match "ab*+(e|f)" ✓ "abef" should not match "ab*d+(e|f)" ✓ "abef" should match "ab?*(e|f)" ✓ "abz" should not match "a!(*)" ✓ "abz" should match "a!(z)" ✓ "abz" should match "a*!(z)" ✓ "abz" should not match "a*(z)" ✓ "abz" should match "a**(z)" ✓ "abz" should match "a*@(z)" ✓ "abz" should not match "a+(z)" ✓ "abz" should not match "a?(z)" ✓ "abz" should not match "a@(z)" ✓ "ac" should not match "!(a)*" ✓ "ac" should match "*(@(a))a@(c)" ✓ "ac" should match "a!(*(b|B))" ✓ "ac" should match "a!(@(b|B))" ✓ "ac" should match "a!(b)*" ✓ "accdef" should match "(a+|b)*" ✓ "accdef" should not match "(a+|b)+" ✓ "accdef" should not match "*?(a)bc" ✓ "accdef" should not match "a(b*(foo|bar))d" ✓ "accdef" should not match "ab*(e|f)" ✓ "accdef" should not match "ab**" ✓ "accdef" should not match "ab**(e|f)" ✓ "accdef" should not match "ab**(e|f)g" ✓ "accdef" should not match "ab***ef" ✓ "accdef" should not match "ab*+(e|f)" ✓ "accdef" should not match "ab*d+(e|f)" ✓ "accdef" should not match "ab?*(e|f)" ✓ "acd" should match "(a+|b)*" ✓ "acd" should not match "(a+|b)+" ✓ "acd" should not match "*?(a)bc" ✓ "acd" should match "@(ab|a*(b))*(c)d" ✓ "acd" should match "a!(*(b|B))" ✓ "acd" should match "a!(@(b|B))" ✓ "acd" should match "a!(@(b|B))d" ✓ "acd" should not match "a(b*(foo|bar))d" ✓ "acd" should match "a+(b|c)d" ✓ "acd" should not match "a[b*(foo|bar)]d" ✓ "acd" should not match "ab*(e|f)" ✓ "acd" should not match "ab**" ✓ "acd" should not match "ab**(e|f)" ✓ "acd" should not match "ab**(e|f)g" ✓ "acd" should not match "ab***ef" ✓ "acd" should not match "ab*+(e|f)" ✓ "acd" should not match "ab*d+(e|f)" ✓ "acd" should not match "ab?*(e|f)" (38ms) ✓ "ax" should match "?(a*|b)" ✓ "ax" should not match "a?(b*)" ✓ "axz" should not match "a+(z)" ✓ "az" should not match "a!(*)" ✓ "az" should not match "a!(z)" ✓ "az" should match "a*!(z)" ✓ "az" should match "a*(z)" ✓ "az" should match "a**(z)" ✓ "az" should match "a*@(z)" ✓ "az" should match "a+(z)" ✓ "az" should match "a?(z)" ✓ "az" should match "a@(z)" ✓ "az" should not match "a\z" ✓ "az" should not match "a\z" ✓ "b" should match "!(a)*" ✓ "b" should match "(a+|b)*" ✓ "b" should not match "a!(b)*" ✓ "b.a" should match "(b|a).(a)" ✓ "b.a" should match "@(b|a).@(a)" ✓ "b/a" should not match "!(b/a)" ✓ "b/b" should match "!(b/a)" ✓ "b/c" should match "!(b/a)" ✓ "b/c" should not match "b/!(c)" ✓ "b/c" should match "b/!(cc)" ✓ "b/c.txt" should not match "b/!(c).txt" ✓ "b/c.txt" should match "b/!(cc).txt" ✓ "b/cc" should match "b/!(c)" ✓ "b/cc" should not match "b/!(cc)" ✓ "b/cc.txt" should not match "b/!(c).txt" ✓ "b/cc.txt" should not match "b/!(cc).txt" ✓ "b/ccc" should match "b/!(c)" ✓ "ba" should match "!(a!(b))" ✓ "ba" should match "b?(a|b)" ✓ "baaac" should not match "*(@(a))a@(c)" ✓ "bar" should match "!(foo)" ✓ "bar" should match "!(foo)*" ✓ "bar" should match "!(foo)b*" ✓ "bar" should match "*(!(foo))" ✓ "baz" should match "!(foo)*" ✓ "baz" should match "!(foo)b*" ✓ "baz" should match "*(!(foo))" ✓ "bb" should match "!(a!(b))" ✓ "bb" should match "!(a)*" ✓ "bb" should not match "a!(b)*" ✓ "bb" should not match "a?(a|b)" ✓ "bbc" should match "!([[*])*" ✓ "bbc" should not match "+(a|b\[)*" ✓ "bbc" should not match "[a*(]*z" ✓ "bz" should not match "a+(z)" ✓ "c" should not match "*(@(a))a@(c)" ✓ "c.a" should not match "!(*.[a-b]*)" ✓ "c.a" should match "!(*[a-b].[a-b]*)" ✓ "c.a" should not match "!*.(a|b)" ✓ "c.a" should not match "!*.(a|b)*" ✓ "c.a" should not match "(b|a).(a)" ✓ "c.a" should not match "*.!(a)" ✓ "c.a" should not match "*.+(b|d)" ✓ "c.a" should not match "@(b|a).@(a)" ✓ "c.c" should not match "!(*.a|*.b|*.c)" ✓ "c.c" should match "*!(.a|.b|.c)" ✓ "c.c" should not match "*.!(a|b|c)" ✓ "c.c" should not match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "c.ccc" should match "!(*.[a-b]*)" ✓ "c.ccc" should match "!(*[a-b].[a-b]*)" ✓ "c.js" should not match "!(*.js)" ✓ "c.js" should match "*!(.js)" ✓ "c.js" should not match "*.!(js)" ✓ "c/a/v" should match "c/!(z)/v" ✓ "c/a/v" should not match "c/*(z)/v" ✓ "c/a/v" should not match "c/+(z)/v" ✓ "c/a/v" should not match "c/@(z)/v" ✓ "c/z/v" should not match "*(z)" ✓ "c/z/v" should not match "+(z)" ✓ "c/z/v" should not match "?(z)" ✓ "c/z/v" should not match "c/!(z)/v" ✓ "c/z/v" should match "c/*(z)/v" ✓ "c/z/v" should match "c/+(z)/v" ✓ "c/z/v" should match "c/@(z)/v" ✓ "c/z/v" should match "c/z/v" ✓ "cc.a" should not match "(b|a).(a)" ✓ "cc.a" should not match "@(b|a).@(a)" ✓ "ccc" should match "!(a)*" ✓ "ccc" should not match "a!(b)*" ✓ "cow" should match "!(*.*)" ✓ "cow" should not match "!(*.*)." ✓ "cow" should not match ".!(*.*)" ✓ "cz" should not match "a!(*)" ✓ "cz" should not match "a!(z)" ✓ "cz" should not match "a*!(z)" ✓ "cz" should not match "a*(z)" ✓ "cz" should not match "a**(z)" ✓ "cz" should not match "a*@(z)" ✓ "cz" should not match "a+(z)" ✓ "cz" should not match "a?(z)" ✓ "cz" should not match "a@(z)" ✓ "d.a.d" should not match "!(*.[a-b]*)" ✓ "d.a.d" should match "!(*[a-b].[a-b]*)" ✓ "d.a.d" should not match "!*.(a|b)*" ✓ "d.a.d" should match "!*.*(a|b)" ✓ "d.a.d" should not match "!*.{a,b}*" ✓ "d.a.d" should match "*.!(a)" ✓ "d.a.d" should match "*.+(b|d)" ✓ "d.d" should match "!(*.a|*.b|*.c)" ✓ "d.d" should match "*!(.a|.b|.c)" ✓ "d.d" should match "*.!(a|b|c)" ✓ "d.d" should not match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "d.js.d" should match "!(*.js)" ✓ "d.js.d" should match "*!(.js)" ✓ "d.js.d" should match "*.!(js)" ✓ "dd.aa.d" should not match "(b|a).(a)" ✓ "dd.aa.d" should not match "@(b|a).@(a)" ✓ "def" should not match "()ef" ✓ "e.e" should match "!(*.a|*.b|*.c)" ✓ "e.e" should match "*!(.a|.b|.c)" ✓ "e.e" should match "*.!(a|b|c)" ✓ "e.e" should not match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "ef" should match "()ef" ✓ "effgz" should match "@(b+(c)d|e*(f)g?|?(h)i@(j|k))" ✓ "efgz" should match "@(b+(c)d|e*(f)g?|?(h)i@(j|k))" ✓ "egz" should match "@(b+(c)d|e*(f)g?|?(h)i@(j|k))" ✓ "egz" should not match "@(b+(c)d|e+(f)g?|?(h)i@(j|k))" ✓ "egzefffgzbcdij" should match "*(b+(c)d|e*(f)g?|?(h)i@(j|k))" ✓ "f" should not match "!(f!(o))" ✓ "f" should match "!(f(o))" ✓ "f" should not match "!(f)" ✓ "f" should not match "*(!(f))" ✓ "f" should not match "+(!(f))" ✓ "f.a" should not match "!(*.a|*.b|*.c)" ✓ "f.a" should match "*!(.a|.b|.c)" (38ms) ✓ "f.a" should not match "*.!(a|b|c)" ✓ "f.f" should match "!(*.a|*.b|*.c)" ✓ "f.f" should match "*!(.a|.b|.c)" ✓ "f.f" should match "*.!(a|b|c)" ✓ "f.f" should not match "*.(a|b|@(ab|a*@(b))*(c)d)" ✓ "fa" should not match "!(f!(o))" ✓ "fa" should match "!(f(o))" ✓ "fb" should not match "!(f!(o))" ✓ "fb" should match "!(f(o))" ✓ "fff" should match "!(f)" ✓ "fff" should match "*(!(f))" ✓ "fff" should match "+(!(f))" ✓ "fffooofoooooffoofffooofff" should match "*(*(f)*(o))" ✓ "ffo" should match "*(f*(o))" ✓ "file.C" should not match "*.c?(c)" ✓ "file.c" should match "*.c?(c)" ✓ "file.cc" should match "*.c?(c)" ✓ "file.ccc" should not match "*.c?(c)" ✓ "fo" should match "!(f!(o))" ✓ "fo" should not match "!(f(o))" ✓ "fofo" should match "*(f*(o))" ✓ "fofoofoofofoo" should match "*(fo|foo)" ✓ "fofoofoofofoo" should match "*(fo|foo)" ✓ "foo" should match "!(!(foo))" ✓ "foo" should match "!(f)" ✓ "foo" should not match "!(foo)" ✓ "foo" should not match "!(foo)*" ✓ "foo" should not match "!(foo)*" ✓ "foo" should not match "!(foo)+" ✓ "foo" should not match "!(foo)b*" ✓ "foo" should match "!(x)" ✓ "foo" should match "!(x)*" ✓ "foo" should match "*" ✓ "foo" should match "*(!(f))" ✓ "foo" should not match "*(!(foo))" ✓ "foo" should not match "*(@(a))a@(c)" ✓ "foo" should match "*(@(foo))" ✓ "foo" should not match "*(a|b\[)" ✓ "foo" should match "*(a|b\[)|f*" ✓ "foo" should match "@(*(a|b\[)|f*)" ✓ "foo" should not match "*/*/*" ✓ "foo" should not match "*f" ✓ "foo" should match "*foo*" ✓ "foo" should match "+(!(f))" ✓ "foo" should not match "??" ✓ "foo" should match "???" ✓ "foo" should not match "bar" ✓ "foo" should match "f*" ✓ "foo" should not match "fo" ✓ "foo" should match "foo" ✓ "foo" should match "{*(a|b\[),f*}" ✓ "foo*" should match "foo\*" ✓ "foo*bar" should match "foo\*bar" ✓ "foo.js" should not match "!(foo).js" ✓ "foo.js.js" should match "*.!(js)" ✓ "foo.js.js" should not match "*.!(js)*" ✓ "foo.js.js" should not match "*.!(js)*.!(js)" ✓ "foo.js.js" should not match "*.!(js)+" ✓ "foo.txt" should match "**/!(bar).txt" ✓ "foo/bar" should not match "*/*/*" ✓ "foo/bar" should match "foo/!(foo)" ✓ "foo/bar" should match "foo/*" ✓ "foo/bar" should match "foo/bar" ✓ "foo/bar" should not match "foo?bar" ✓ "foo/bar" should match "foo[/]bar" ✓ "foo/bar/baz.jsx" should match "foo/bar/**/*.+(js|jsx)" ✓ "foo/bar/baz.jsx" should match "foo/bar/*.+(js|jsx)" ✓ "foo/bb/aa/rr" should match "**/**/**" ✓ "foo/bb/aa/rr" should not match "*/*/*" ✓ "foo/bba/arr" should match "*/*/*" ✓ "foo/bba/arr" should not match "foo*" ✓ "foo/bba/arr" should not match "foo**" ✓ "foo/bba/arr" should not match "foo/*" ✓ "foo/bba/arr" should match "foo/**" ✓ "foo/bba/arr" should not match "foo/**arr" ✓ "foo/bba/arr" should not match "foo/**z" ✓ "foo/bba/arr" should not match "foo/*arr" ✓ "foo/bba/arr" should not match "foo/*z" ✓ "foob" should not match "!(foo)b*" ✓ "foob" should not match "(foo)bb" ✓ "foobar" should match "!(foo)" ✓ "foobar" should not match "!(foo)*" ✓ "foobar" should not match "!(foo)*" ✓ "foobar" should not match "!(foo)b*" ✓ "foobar" should match "*(!(foo))" ✓ "foobar" should match "*ob*a*r*" ✓ "foobar" should not match "foo\*bar" ✓ "foobb" should not match "!(foo)b*" ✓ "foobb" should match "(foo)bb" ✓ "(foo)bb" should match "\(foo\)bb" ✓ "foofoofo" should match "@(foo|f|fo)*(f|of+(o))" ✓ "foofoofo" should match "@(foo|f|fo)*(f|of+(o))" ✓ "fooofoofofooo" should match "*(f*(o))" ✓ "foooofo" should match "*(f*(o))" ✓ "foooofof" should match "*(f*(o))" ✓ "foooofof" should not match "*(f+(o))" ✓ "foooofofx" should not match "*(f*(o))" ✓ "foooxfooxfoxfooox" should match "*(f*(o)x)" ✓ "foooxfooxfxfooox" should match "*(f*(o)x)" ✓ "foooxfooxofoxfooox" should not match "*(f*(o)x)" ✓ "foot" should match "@(!(z*)|*x)" ✓ "foox" should match "@(!(z*)|*x)" ✓ "fz" should not match "*(z)" ✓ "fz" should not match "+(z)" ✓ "fz" should not match "?(z)" ✓ "moo.cow" should not match "!(moo).!(cow)" ✓ "moo.cow" should not match "!(*).!(*)" ✓ "moo.cow" should not match "!(*.*).!(*.*)" ✓ "mad.moo.cow" should not match "!(*.*).!(*.*)" ✓ "mad.moo.cow" should not match ".!(*.*)" ✓ "Makefile" should match "!(*.c|*.h|Makefile.in|config*|README)" ✓ "Makefile.in" should not match "!(*.c|*.h|Makefile.in|config*|README)" ✓ "moo" should match "!(*.*)" ✓ "moo" should not match "!(*.*)." ✓ "moo" should not match ".!(*.*)" ✓ "moo.cow" should not match "!(*.*)" ✓ "moo.cow" should not match "!(*.*)." ✓ "moo.cow" should not match ".!(*.*)" ✓ "mucca.pazza" should not match "mu!(*(c))?.pa!(*(z))?" ✓ "ofoofo" should match "*(of+(o))" ✓ "ofoofo" should match "*(of+(o)|f)" ✓ "ofooofoofofooo" should not match "*(f*(o))" ✓ "ofoooxoofxo" should match "*(*(of*(o)x)o)" ✓ "ofoooxoofxoofoooxoofxo" should match "*(*(of*(o)x)o)" ✓ "ofoooxoofxoofoooxoofxofo" should not match "*(*(of*(o)x)o)" ✓ "ofoooxoofxoofoooxoofxoo" should match "*(*(of*(o)x)o)" ✓ "ofoooxoofxoofoooxoofxooofxofxo" should match "*(*(of*(o)x)o)" ✓ "ofxoofxo" should match "*(*(of*(o)x)o)" ✓ "oofooofo" should match "*(of|oof+(o))" ✓ "ooo" should match "!(f)" ✓ "ooo" should match "*(!(f))" ✓ "ooo" should match "+(!(f))" ✓ "oxfoxfox" should not match "*(oxf+(ox))" ✓ "oxfoxoxfox" should match "*(oxf+(ox))" ✓ "para" should match "para*([0-9])" ✓ "para" should not match "para+([0-9])" ✓ "para.38" should match "para!(*.[00-09])" ✓ "para.graph" should match "para!(*.[0-9])" ✓ "para13829383746592" should match "para*([0-9])" ✓ "para381" should not match "para?([345]|99)1" ✓ "para39" should match "para!(*.[0-9])" ✓ "para987346523" should match "para+([0-9])" ✓ "para991" should match "para?([345]|99)1" ✓ "paragraph" should match "para!(*.[0-9])" ✓ "paragraph" should not match "para*([0-9])" ✓ "paragraph" should match "para@(chute|graph)" ✓ "paramour" should not match "para@(chute|graph)" ✓ "parse.y" should match "!(*.c|*.h|Makefile.in|config*|README)" ✓ "shell.c" should not match "!(*.c|*.h|Makefile.in|config*|README)" ✓ "VMS.FILE;" should not match "*\;[1-9]*([0-9])" ✓ "VMS.FILE;0" should not match "*\;[1-9]*([0-9])" ✓ "VMS.FILE;9" should match "*\;[1-9]*([0-9])" ✓ "VMS.FILE;1" should match "*\;[1-9]*([0-9])" ✓ "VMS.FILE;1" should match "*;[1-9]*([0-9])" ✓ "VMS.FILE;139" should match "*\;[1-9]*([0-9])" ✓ "VMS.FILE;1N" should not match "*\;[1-9]*([0-9])" ✓ "xfoooofof" should not match "*(f*(o))" ✓ "XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1" should match "XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*" ✓ "XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1" should not match "XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*" ✓ "z" should match "*(z)" ✓ "z" should match "+(z)" ✓ "z" should match "?(z)" ✓ "zf" should not match "*(z)" ✓ "zf" should not match "+(z)" ✓ "zf" should not match "?(z)" ✓ "zoot" should not match "@(!(z*)|*x)" ✓ "zoox" should match "@(!(z*)|*x)" ✓ "zz" should not match "(a+|b)*" extglobs ✓ should throw on imbalanced sets when `options.strictBrackets` is true ✓ should match extglobs ending with statechar ✓ should not choke on non-extglobs ✓ should work with file extensions ✓ should support !(...) (79ms) ✓ should support logical-or inside negation !(...) extglobs ✓ should support multiple negation !(...) extglobs in one expression ✓ should support nested negation !(...) extglobs ✓ should support *(...) ✓ should support +(...) extglobs ✓ should support ?(...) extglobs ✓ should support @(...) extglobs ✓ should support qmark matching ✓ should match exactly one of the given pattern: ✓ should pass tests from rosenblatt's korn shell book ✓ tests derived from the pd-ksh test suite ✓ stuff from korn's book ✓ simple kleene star tests ✓ should support multiple extglobs: (81ms) ✓ should correctly match empty parens ✓ should match escaped parens ✓ should match escaped backslashes ✓ should support regex characters extglobs from the bash spec ✓ should match negation extglobs (291ms) ✓ should backtrack in alternation matches ✓ should support exclusions ✓ valid numbers ✓ check extended globbing in pattern removal ✓ More tests derived from a bug report (in bash) concerning extended glob patterns following a * (85ms) ✓ bug in all versions up to and including bash-2.05b ✓ should work with character classes ✓ should support POSIX character classes in extglobs ✓ should pass extglob2 tests ✓ should support backtracking in alternation matches ✓ should support exclusions issue-related tests ✓ micromatch issue #140 ✓ micromatch issue#15 ✓ micromatch issue#23 ✓ micromatch issue#24 ✓ micromatch issue#58 - only match nested dirs when `**` is the only thing in a segment ✓ micromatch issue#63 (dots) ✓ micromatch issue#79 handling of potential regex exploits ✓ should support long escape sequences ✓ should throw an error when the pattern is too long ✓ should allow max bytes to be customized micromatch empty list ✓ should return an empty array posix paths ✓ should return an array of matches ✓ should return an array of matches for a literal string ✓ should return an array of matches for an array of literal strings ✓ should support regex logical or (69ms) ✓ should support regex ranges ✓ should support single globs (*) ✓ should support globstars (**) ✓ should work with file extensions ✓ should match literal brackets windows paths ✓ should return an array of matches for a literal string ✓ should return an array of matches for an array of literal strings ✓ should support regex logical or ✓ should support regex ranges ✓ should support single globs (*) ✓ should support globstars (**) ✓ should work with file extensions (76ms) basic tests minimatch parity http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test ✓ 0: h ✓ 1: a* ✓ 2: X* allow null glob expansion ✓ 3: a ✓ 4: X* micromatch has same results as Bash. Minimatch does this differently ✓ 5: m ✓ 6: \* ✓ 7: \** ✓ 8: \*\* ✓ 9: b*/ ✓ 10: c* ✓ 11: ** ✓ 12: \.\./*/ ✓ 13: s/\..*// legendary larry crashes bashes ✓ 14: l ✓ 15: /^root:/{s/^[^:]*:[^:]*:([^:]*).*$/\1/ ✓ 16: /^root:/{s/^[^:]*:[^:]*:([^:]*).*$// character classes ✓ 17: c ✓ 18: [a-c]b* ✓ 19: [a-y]*[^c] ✓ 20: a*[^c] ✓ 21: undefined ✓ 22: a[X-]b ✓ 23: undefined ✓ 24: [^a-c]* ✓ 25: undefined trailing slashes ✓ 26: t ✓ 27: a*b/* ✓ 28: a*?/* ✓ 29: a\*b/* ✓ 30: a\*?/* ✓ 31: *\\!* ✓ 32: *\!* ✓ 33: *.\* ✓ 34: a[b]c ✓ 35: a[\\b]c ✓ 36: a?c ✓ 37: a\*c http://www.opensource.apple.com/source/bash/bash-23/bash/tests/glob-test ✓ 38: h ✓ 39: undefined ✓ 40: */man*/bash.* ✓ 41: man/man1/bash.1 ✓ 42: a***c ✓ 43: a*****?c ✓ 44: ?*****?? ✓ 45: *****?? ✓ 46: ?*****?c ✓ 47: ?***?****c ✓ 48: ?***?****? ✓ 49: ?***?**** ✓ 50: *******c ✓ 51: *******? ✓ 52: a*cd**?**??k ✓ 53: a**?**cd**?**??k ✓ 54: a**?**cd**?**??k*** ✓ 55: a**?**cd**?**??***k ✓ 56: a**?**cd**?**??***k** ✓ 57: a****c**?**??***** ✓ 58: [-abc] ✓ 59: [abc-] ✓ 60: [[] ✓ 61: [ ✓ 62: [* a right bracket shall lose its special meaning and represent itself in a bracket expression if it occurs first in the list. -- POSIX.2 2.8.3.2 ✓ 63: a ✓ 64: []] ✓ 65: []-] ✓ 66: [a-z] ✓ 67: ??**********?****? ✓ 68: ??**********?****c ✓ 69: ?************c****?**** ✓ 70: *c*?** ✓ 71: a*****c*?** ✓ 72: a********???******* ✓ 73: [] ✓ 74: [abc nocase tests ✓ 75: n ✓ 76: XYZ ✓ 77: ab* ✓ 78: [ia]?[ck] braces: onestar/twostar ✓ 79: b ✓ 80: {/*,*} ✓ 81: {/?,*} dots should not match unless requested ✓ 82: d ✓ 83: ** ✓ 84: undefined ✓ 85: a/*/b ✓ 86: a/*/b ✓ 87: a/.*/b ✓ 88: a/.*/b ✓ 89: ** ✓ 90: *(a/b) ✓ 91: *(a|{b),c)} (74ms) ✓ 92: [!a* ✓ 93: undefined ✓ 94: *(a|{b,c}) ✓ 95: {a,*(b|c,d)} ✓ 96: {a,*(b|{c,d})} ✓ 97: *(a|{b|c,c}) ✓ 98: *(a|{b|c,c}) ✓ 99: a?b ✓ 100: a?b negation tests ✓ 101: n ✓ 102: undefined ✓ 103: !a* ✓ 104: !a* ✓ 105: a* ✓ 106: !\!a* ✓ 107: undefined https://github.com/isaacs/minimatch/issues/5 ✓ 108: h ✓ 109: undefined ✓ 110: **/.x/** https://github.com/isaacs/minimatch/issues/59 ✓ 111: h ✓ 112: [z-a] ✓ 113: a/[2015-03-10T00:23:08.647Z]/z ✓ 114: [a-0][a-Ā] backslashes ✓ should match literal backslashes minimatch issues (as of 12/7/2016) ✓ https://github.com/isaacs/minimatch/issues/29 ✓ https://github.com/isaacs/minimatch/issues/30 ✓ https://github.com/isaacs/minimatch/issues/50 ✓ https://github.com/isaacs/minimatch/issues/67 (should work consistently with `makeRe` and matcher functions) ✓ https://github.com/isaacs/minimatch/issues/75 ✓ https://github.com/isaacs/minimatch/issues/78 ✓ https://github.com/isaacs/minimatch/issues/82 ✓ https://github.com/isaacs/minimatch/issues/83 negation posix paths ✓ should support negating with single * ✓ should support negation patterns ✓ should support negating with literal non-globs ✓ should negate files with extensions: ✓ should only treat leading exclamation as special ✓ should support negated globstars ("**") ✓ should negate dotfiles: ✓ should negate files in the immediate directory: ✓ should not give special meaning to non-leading exclamations ✓ should negate files in any directory: windows paths ✓ should support negation patterns options options.failglob (from Bash 4.3 tests) ✓ should throw an error when no matches are found: options.ignore ✓ should filter out ignored patterns options.matchBase ✓ should match the basename of file paths when `options.matchBase` is true ✓ should work with negation patterns options.flags ✓ should be case-sensitive by default ✓ should not be case-sensitive when `i` is set on `options.flags` options.nobrace ✓ should not expand braces when disabled options.nocase ✓ should not be case-sensitive when `options.nocase` is true ✓ should not double-set `i` when both `nocase` and the `i` flag are set options.noextglob ✓ should match literal parens when noextglob is true (issue #116) ✓ should not match extglobs when noextglob is true options.nodupes ✓ should remove duplicate elements from the result array: ✓ should not remove duplicates options.nonegate ✓ should support the `nonegate` option: options.nonull ✓ should support the `nonull` option: options.windows ✓ should windows file paths by default ✓ should windows absolute paths ✓ should strip leading `./` (68ms) options.dot when `dot` or `dotfile` is NOT true: ✓ should not match dotfiles by default: ✓ should match dotfiles when a leading dot is defined in the path: ✓ should use negation patterns on dotfiles: windows ✓ should windows file paths ✓ should windows absolute paths posix classes posix bracket type conversion ✓ should create regex character classes from POSIX bracket expressions: integration: posix classes with globs ✓ should work with globs .isMatch ✓ should support POSIX.2 character classes ✓ should support multiple posix brackets in one character class ✓ should match word characters ✓ should match character classes ✓ should match character class alphabetical ranges ✓ should match character classes with leading dashes ✓ should match character classes with trailing dashes ✓ should match bracket literals ✓ should support negated character classes ✓ should match negated dashes ✓ should match negated mm ✓ should match alpha-numeric characters ✓ should not create an invalid posix character class: ✓ should return `true` when the pattern matches: ✓ should return `false` when the pattern does not match: literals ✓ should match literal brackets when escaped .makeRe() ✓ should make a regular expression for the given pattern: POSIX: From the test suite for the POSIX.2 (BRE) pattern matching code: ✓ First, test POSIX.2 character classes ✓ should match using POSIX.2 negation patterns (66ms) ✓ should match word characters ✓ should match digits with word class ✓ should not digits ✓ should not match word characters with digit class ✓ should match uppercase alpha characters ✓ should not match lowercase alpha characters ✓ should not match digits with upper class ✓ should match lowercase alpha characters ✓ should not match uppercase alpha characters ✓ should match one lower and one upper character ✓ should match hexidecimal digits ✓ should match punctuation characters (\-!"#$%&'()\*+,./:;<=>?@[\]^_`{|}~) ✓ should only match one character ✓ should only match one or more punctuation characters ✓ invalid character class expressions are just characters to be matched ✓ should match the start of a valid sh identifier ✓ should match the first two characters of a valid sh identifier ✓ should match multiple posix classses ✓ how about A? ✓ OK, what's a tab? is it a blank? a space? ✓ let's check out characters in the ASCII range ✓ punctuation ✓ graph qmarks and stars ✓ should match with qmarks ✓ should support qmark matching ✓ should correctly handle question marks in globs ✓ should match one character per question mark ✓ should match multiple groups of question marks ✓ should use qmarks with other special characters ✓ question marks should not match slashes ✓ question marks should match arbitrary dots ✓ question marks should not match leading dots ✓ question marks should match leading dots when options.dot is true ✓ question marks should match characters preceding a dot regex features back-references ✓ should support regex backreferences character classes ✓ should match regex character classes ✓ should support valid regex ranges ✓ should support valid regex ranges with glob negation patterns ✓ should support valid regex ranges in negated character classes (66ms) capture groups ✓ should support regex capture groups ✓ should support regex capture groups with slashes ✓ should support regex non-capture groups lookarounds ✓ should support regex lookbehinds ✓ should throw an error when regex lookbehinds are used on an unsupported node version special characters unicode ✓ should match Japanese characters regex ✓ should match common regex characters slashes ✓ should match forward slashes ✓ should match backslashes colons and drive letters ✓ should treat common URL characters as literals [ab] - brackets: ✓ should support regex character classes: ✓ should handle brackets ✓ should handle unclosed brackets (a|b) - logical OR: ✓ should support regex logical OR: dollar $ ✓ should match dollar signs caret ^ ✓ should match carets stars single stars ✓ should match using one consecutive star ✓ should support multiple non-consecutive stars in a path segment ✓ should support stars following brackets ✓ should support stars following parens ✓ should not match slashes with single stars ✓ should return true when one of the given patterns matches the string ✓ should return false when the path does not match the pattern ✓ should match a path segment for each single star (59ms) ✓ should match any character besides "/" with a single "*" ✓ should support single globs (*) ✓ should only match a single folder per star when globstars are used ✓ should optionally match a trailing slash when single star is last char ✓ should support globstars (**) ✓ should work with file extensions ✓ should correctly match slashes ✓ should optionally match trailing slashes with braces 1953 passing (3s) Removing node_modules/micromatch create-stamp debian/debhelper-build-stamp dh_testroot -i dh_prep -i dh_auto_install --buildsystem=nodejs -i Found "files" field in ./package.json, using it mkdir -p /build/node-micromatch-XEgXbq/node-micromatch-4.0.2\+repack\+-4.0.1/debian/node-micromatch//usr/share/nodejs/micromatch/ cp --reflink=auto -a ./index.js /build/node-micromatch-XEgXbq/node-micromatch-4.0.2\+repack\+-4.0.1/debian/node-micromatch//usr/share/nodejs/micromatch// cp --reflink=auto -a ./package.json /build/node-micromatch-XEgXbq/node-micromatch-4.0.2\+repack\+-4.0.1/debian/node-micromatch//usr/share/nodejs/micromatch// No "files" field in types-micromatch/package.json, install all files mkdir -p /build/node-micromatch-XEgXbq/node-micromatch-4.0.2\+repack\+-4.0.1/debian/node-micromatch//usr/share/nodejs/\@types/micromatch/ cp --reflink=auto -a types-micromatch/package.json /build/node-micromatch-XEgXbq/node-micromatch-4.0.2\+repack\+-4.0.1/debian/node-micromatch//usr/share/nodejs/\@types/micromatch// cp --reflink=auto -a types-micromatch/index.d.ts /build/node-micromatch-XEgXbq/node-micromatch-4.0.2\+repack\+-4.0.1/debian/node-micromatch//usr/share/nodejs/\@types/micromatch// Set ${nodejs:Version} to 12.19.0~dfsg dh_installdocs -i dh_installchangelogs -i dh_installexamples -i dh_perl -i dh_link -i dh_strip_nondeterminism -i dh_compress -i dh_fixperms -i dh_missing -i dh_installdeb -i dh_gencontrol -i dpkg-gencontrol: warning: package node-micromatch: substitution variable ${nodejs:Version} unused, but is defined dh_md5sums -i dh_builddeb -i dpkg-deb: building package 'node-micromatch' in '../node-micromatch_4.0.2+repack+~4.0.1-1_all.deb'. dpkg-genbuildinfo --build=all dpkg-genchanges --build=all >../node-micromatch_4.0.2+repack+~4.0.1-1_all.changes dpkg-genchanges: info: binary-only arch-indep upload (source code and arch-specific packages not included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) I: running special hook: sync-out /build/node-micromatch-XEgXbq /tmp/node-micromatch-4.0.2+repack+~4.0.1-121ut5ka8 I: cleaning package lists and apt cache... I: creating tarball... I: done I: removing tempdir /tmp/mmdebstrap.QPvOAg4alW... I: success in 464.5772 seconds md5: node-micromatch_4.0.2+repack+~4.0.1-1_all.deb: OK sha1: node-micromatch_4.0.2+repack+~4.0.1-1_all.deb: OK sha256: node-micromatch_4.0.2+repack+~4.0.1-1_all.deb: OK Checksums: OK