Blob Blame History Raw
'use strict';

require('mocha');
var assert = require('assert');
var hasGlob = require('./');

describe('hasGlob', function () {
  it('should return `true` if the array has a glob pattern:', function () {
    assert(hasGlob(['foo', 'bar', '*.js']));
    assert(hasGlob(['foo', 'bar', '!*.js']));
    assert(hasGlob(['foo', 'bar', '!foo']));
    assert(hasGlob(['foo', 'bar', '!foo.js']));
    assert(hasGlob(['foo', 'bar', '**/abc.js']));
    assert(hasGlob(['foo', 'bar', 'abc/*.js']));
  });

  it('should work with strings:', function () {
    assert(hasGlob('*.js'));
    assert(hasGlob('!*.js'));
    assert(hasGlob('!foo'));
    assert(hasGlob('!foo.js'));
    assert(hasGlob('**/abc.js'));
    assert(hasGlob('abc/*.js'));
  });

  it('should return `true` if a path has brace characters:', function () {
    assert(hasGlob(['foo', 'bar', 'abc/{a,b}.js']));
    assert(hasGlob(['foo', 'bar', 'abc/{a..z}.js']));
    assert(hasGlob(['foo', 'bar', 'abc/{a..z..2}.js']));
  });

  it('should return `true` if it has an extglob:', function () {
    assert(hasGlob(['foo', 'bar', 'abc/@(a).js']));
    assert(hasGlob(['foo', 'bar', 'abc/!(a).js']));
    assert(hasGlob(['foo', 'bar', 'abc/+(a).js']));
    assert(hasGlob(['foo', 'bar', 'abc/*(a).js']));
    assert(hasGlob(['foo', 'bar', 'abc/?(a).js']));
    assert(hasGlob(['foo', 'bar', 'abc/@(.js)']));
    assert(hasGlob(['foo', 'bar', 'abc/!(.js)']));
    assert(hasGlob(['foo', 'bar', 'abc/+(.js)']));
    assert(hasGlob(['foo', 'bar', 'abc/*(.js)']));
    assert(hasGlob(['foo', 'bar', 'abc/?(.js)']));
  });

  it('should return `true` if a path has regex characters:', function () {
    assert(hasGlob(['foo', 'bar', 'abc/(aaa|bbb).js']));
    assert(hasGlob(['foo', 'bar', 'abc/?.js']));
    assert(hasGlob(['foo', 'bar', '?.js']));
    assert(hasGlob(['foo', 'bar', '[abc].js']));
    assert(hasGlob(['foo', 'bar', '[^abc].js']));
    assert(hasGlob(['foo', 'bar', 'a/b/c/[a-z].js']));
    assert(hasGlob(['foo', 'bar', '[a-j]*[^c]b/c']));
  });

  it('should return `false` if it is not a string:', function () {
    assert(!hasGlob([]));
    assert(!hasGlob([null]));
    assert(!hasGlob([undefined]));
    assert(!hasGlob([{}]));
  });

  it('should return `false` if it is not a glob pattern:', function () {
    assert(!hasGlob(['.']));
    assert(!hasGlob(['aa']));
    assert(!hasGlob(['abc.js']));
    assert(!hasGlob(['abc/def/ghi.js']));
  });
});