diff options
| author | Vincent LE GOFF <g_n_s@hotmail.fr> | 2019-03-02 20:56:19 +0100 |
|---|---|---|
| committer | Ryan Dahl <ry@tinyclouds.org> | 2019-03-02 14:56:19 -0500 |
| commit | c131b8f3b6664dfa69d80c2643b3261540b58fd7 (patch) | |
| tree | 897e89ca7d5a4e02cb87d24a027e1f8cacbcaf39 /fs/glob_test.ts | |
| parent | 2db147a0018b591c5039acf2b75706d960b1dec3 (diff) | |
Glob integration for the FS walker (denoland/deno_std#219)
Original: https://github.com/denoland/deno_std/commit/0c3ba838fa7e74a859d2a6dbfec3941a521c7988
Diffstat (limited to 'fs/glob_test.ts')
| -rw-r--r-- | fs/glob_test.ts | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/fs/glob_test.ts b/fs/glob_test.ts new file mode 100644 index 000000000..50e6abef8 --- /dev/null +++ b/fs/glob_test.ts @@ -0,0 +1,134 @@ +const { mkdir, open } = Deno; +import { FileInfo } from "deno"; +import { test, assert } from "../testing/mod.ts"; +import { glob } from "./glob.ts"; +import { join } from "./path.ts"; +import { testWalk } from "./walk_test.ts"; +import { walk, walkSync, WalkOptions } from "./walk.ts"; + +async function touch(path: string): Promise<void> { + await open(path, "w"); +} + +async function walkArray( + dirname: string = ".", + options: WalkOptions = {} +): Promise<Array<string>> { + const arr: string[] = []; + for await (const f of walk(dirname, { ...options })) { + arr.push(f.path.replace(/\\/g, "/")); + } + arr.sort(); + const arr_sync = Array.from(walkSync(dirname, options), (f: FileInfo) => + f.path.replace(/\\/g, "/") + ).sort(); + assert.equal(arr, arr_sync); + return arr; +} + +test({ + name: "glob: glob to regex", + fn() { + assert.equal(glob("unicorn.*") instanceof RegExp, true); + assert.equal(glob("unicorn.*").test("poney.ts"), false); + assert.equal(glob("unicorn.*").test("unicorn.py"), true); + assert.equal(glob("*.ts").test("poney.ts"), true); + assert.equal(glob("*.ts").test("unicorn.js"), false); + assert.equal( + glob(join("unicorn", "**", "cathedral.ts")).test( + join("unicorn", "in", "the", "cathedral.ts") + ), + true + ); + assert.equal( + glob(join("unicorn", "**", "cathedral.ts")).test( + join("unicorn", "in", "the", "kitchen.ts") + ), + false + ); + assert.equal( + glob(join("unicorn", "**", "bathroom.*")).test( + join("unicorn", "sleeping", "in", "bathroom.py") + ), + true + ); + assert.equal( + glob(join("unicorn", "!(sleeping)", "bathroom.ts"), { + extended: true + }).test(join("unicorn", "flying", "bathroom.ts")), + true + ); + assert.equal( + glob(join("unicorn", "(!sleeping)", "bathroom.ts"), { + extended: true + }).test(join("unicorn", "sleeping", "bathroom.ts")), + false + ); + } +}); + +testWalk( + async (d: string) => { + await mkdir(d + "/a"); + await touch(d + "/a/x.ts"); + }, + async function globInWalk() { + const arr = await walkArray(".", { match: [glob("*.ts")] }); + assert.equal(arr.length, 1); + assert.equal(arr[0], "./a/x.ts"); + } +); + +testWalk( + async (d: string) => { + await mkdir(d + "/a"); + await mkdir(d + "/b"); + await touch(d + "/a/x.ts"); + await touch(d + "/b/z.ts"); + await touch(d + "/b/z.js"); + }, + async function globInWalkWildcardFiles() { + const arr = await walkArray(".", { match: [glob("*.ts")] }); + assert.equal(arr.length, 2); + assert.equal(arr[0], "./a/x.ts"); + assert.equal(arr[1], "./b/z.ts"); + } +); + +testWalk( + async (d: string) => { + await mkdir(d + "/a"); + await mkdir(d + "/a/yo"); + await touch(d + "/a/yo/x.ts"); + }, + async function globInWalkFolderWildcard() { + const arr = await walkArray(".", { + match: [ + glob(join("a", "**", "*.ts"), { + flags: "g", + extended: true, + globstar: true + }) + ] + }); + assert.equal(arr.length, 1); + assert.equal(arr[0], "./a/yo/x.ts"); + } +); + +testWalk( + async (d: string) => { + await touch(d + "/x.ts"); + await touch(d + "/x.js"); + await touch(d + "/b.js"); + }, + async function globInWalkWildcardExtension() { + const arr = await walkArray(".", { + match: [glob("x.*", { flags: "g", extended: true, globstar: true })] + }); + console.log(arr); + assert.equal(arr.length, 2); + assert.equal(arr[0], "./x.js"); + assert.equal(arr[1], "./x.ts"); + } +); |
