react / wstein / node_modules / jest-cli / node_modules / istanbul / node_modules / fileset / node_modules / glob / test / 00-setup.js
80713 views// just a little pre-run script to set up the fixtures.1// zz-finish cleans it up23var mkdirp = require("mkdirp")4var path = require("path")5var i = 06var tap = require("tap")7var fs = require("fs")8var rimraf = require("rimraf")910var files =11[ "a/.abcdef/x/y/z/a"12, "a/abcdef/g/h"13, "a/abcfed/g/h"14, "a/b/c/d"15, "a/bc/e/f"16, "a/c/d/c/b"17, "a/cb/e/f"18]1920var symlinkTo = path.resolve(__dirname, "a/symlink/a/b/c")21var symlinkFrom = "../.."2223files = files.map(function (f) {24return path.resolve(__dirname, f)25})2627tap.test("remove fixtures", function (t) {28rimraf(path.resolve(__dirname, "a"), function (er) {29t.ifError(er, "remove fixtures")30t.end()31})32})3334files.forEach(function (f) {35tap.test(f, function (t) {36var d = path.dirname(f)37mkdirp(d, 0755, function (er) {38if (er) {39t.fail(er)40return t.bailout()41}42fs.writeFile(f, "i like tests", function (er) {43t.ifError(er, "make file")44t.end()45})46})47})48})4950if (process.platform !== "win32") {51tap.test("symlinky", function (t) {52var d = path.dirname(symlinkTo)53console.error("mkdirp", d)54mkdirp(d, 0755, function (er) {55t.ifError(er)56fs.symlink(symlinkFrom, symlinkTo, "dir", function (er) {57t.ifError(er, "make symlink")58t.end()59})60})61})62}6364;["foo","bar","baz","asdf","quux","qwer","rewq"].forEach(function (w) {65w = "/tmp/glob-test/" + w66tap.test("create " + w, function (t) {67mkdirp(w, function (er) {68if (er)69throw er70t.pass(w)71t.end()72})73})74})757677// generate the bash pattern test-fixtures if possible78if (process.platform === "win32" || !process.env.TEST_REGEN) {79console.error("Windows, or TEST_REGEN unset. Using cached fixtures.")80return81}8283var spawn = require("child_process").spawn;84var globs =85// put more patterns here.86// anything that would be directly in / should be in /tmp/glob-test87["test/a/*/+(c|g)/./d"88,"test/a/**/[cg]/../[cg]"89,"test/a/{b,c,d,e,f}/**/g"90,"test/a/b/**"91,"test/**/g"92,"test/a/abc{fed,def}/g/h"93,"test/a/abc{fed/g,def}/**/"94,"test/a/abc{fed/g,def}/**///**/"95,"test/**/a/**/"96,"test/+(a|b|c)/a{/,bc*}/**"97,"test/*/*/*/f"98,"test/**/f"99,"test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**"100,"{./*/*,/tmp/glob-test/*}"101,"{/tmp/glob-test/*,*}" // evil owl face! how you taunt me!102,"test/a/!(symlink)/**"103]104var bashOutput = {}105var fs = require("fs")106107globs.forEach(function (pattern) {108tap.test("generate fixture " + pattern, function (t) {109var cmd = "shopt -s globstar && " +110"shopt -s extglob && " +111"shopt -s nullglob && " +112// "shopt >&2; " +113"eval \'for i in " + pattern + "; do echo $i; done\'"114var cp = spawn("bash", ["-c", cmd], { cwd: path.dirname(__dirname) })115var out = []116cp.stdout.on("data", function (c) {117out.push(c)118})119cp.stderr.pipe(process.stderr)120cp.on("close", function (code) {121out = flatten(out)122if (!out)123out = []124else125out = cleanResults(out.split(/\r*\n/))126127bashOutput[pattern] = out128t.notOk(code, "bash test should finish nicely")129t.end()130})131})132})133134tap.test("save fixtures", function (t) {135var fname = path.resolve(__dirname, "bash-results.json")136var data = JSON.stringify(bashOutput, null, 2) + "\n"137fs.writeFile(fname, data, function (er) {138t.ifError(er)139t.end()140})141})142143function cleanResults (m) {144// normalize discrepancies in ordering, duplication,145// and ending slashes.146return m.map(function (m) {147return m.replace(/\/+/g, "/").replace(/\/$/, "")148}).sort(alphasort).reduce(function (set, f) {149if (f !== set[set.length - 1]) set.push(f)150return set151}, []).sort(alphasort).map(function (f) {152// de-windows153return (process.platform !== 'win32') ? f154: f.replace(/^[a-zA-Z]:\\\\/, '/').replace(/\\/g, '/')155})156}157158function flatten (chunks) {159var s = 0160chunks.forEach(function (c) { s += c.length })161var out = new Buffer(s)162s = 0163chunks.forEach(function (c) {164c.copy(out, s)165s += c.length166})167168return out.toString().trim()169}170171function alphasort (a, b) {172a = a.toLowerCase()173b = b.toLowerCase()174return a > b ? 1 : a < b ? -1 : 0175}176177178