ea2a4e2e3703726e9108740c8731faf4d43417a2
[platform/framework/web/wrtjs.git] / device_home / node_modules / jake / test / integration / file.js
1 const PROJECT_DIR=process.env.PROJECT_DIR;let assert=require("assert"),fs=require("fs"),path=require("path"),file=require(`${PROJECT_DIR}/lib/utils/file`),existsSync=fs.existsSync||path.existsSync,exec=require("child_process").execSync;suite("fileUtils",(function(){test("mkdirP",(function(){let t=[["foo"],["foo","bar"],["foo","bar","baz"],["foo","bar","baz","qux"]];file.mkdirP("foo/bar/baz/qux");let e=exec("find foo").toString().trim().split("\n");for(let f=0,o=e.length;f<o;f++)assert.equal(path.join.apply(path,t[f]),e[f]);file.rmRf("foo")})),test("rmRf",(function(){file.mkdirP("foo/bar/baz/qux"),file.rmRf("foo/bar");let t=exec("find foo").toString().trim().split("\n");assert.equal(1,t.length),assert.equal("foo",t[0]),fs.rmdirSync("foo")})),test("rmRf with symlink subdir",(function(){file.mkdirP("foo"),file.mkdirP("bar"),fs.writeFileSync("foo/hello.txt","hello, it's me"),fs.symlinkSync("../foo","bar/foo"),file.rmRf("bar");let t=!1;try{fs.statSync("bar")}catch(e){"ENOENT"==e.code&&(t=!0)}assert.equal(!0,t);let e=fs.readdirSync("foo");assert.equal(1,e.length),assert.equal("hello.txt",e[0]),fs.unlinkSync("foo/hello.txt"),fs.rmdirSync("foo")})),test("rmRf with symlinked dir",(function(){file.mkdirP("foo"),fs.writeFileSync("foo/hello.txt","hello!"),fs.symlinkSync("foo","bar"),file.rmRf("bar");let t=!1;try{fs.statSync("bar")}catch(e){"ENOENT"==e.code&&(t=!0)}assert.equal(!0,t);let e=fs.readdirSync("foo");assert.equal(1,e.length),assert.equal("hello.txt",e[0]),fs.unlinkSync("foo/hello.txt"),fs.rmdirSync("foo")})),test("cpR with same name and different directory",(function(){file.mkdirP("foo"),fs.writeFileSync("foo/bar.txt","w00t"),file.cpR("foo","bar"),assert.ok(existsSync("bar/bar.txt")),file.rmRf("foo"),file.rmRf("bar")})),test("cpR with same to and from will throw",(function(){assert.throws((function(){file.cpR("foo.txt","foo.txt")}))})),test("cpR rename via copy in directory",(function(){file.mkdirP("foo"),fs.writeFileSync("foo/bar.txt","w00t"),file.cpR("foo/bar.txt","foo/baz.txt"),assert.ok(existsSync("foo/baz.txt")),file.rmRf("foo")})),test("cpR rename via copy in base",(function(){fs.writeFileSync("bar.txt","w00t"),file.cpR("bar.txt","baz.txt"),assert.ok(existsSync("baz.txt")),file.rmRf("bar.txt"),file.rmRf("baz.txt")})),test("cpR keeps file mode",(function(){fs.writeFileSync("bar.txt","w00t",{mode:488}),fs.writeFileSync("bar1.txt","w00t!",{mode:484}),file.cpR("bar.txt","baz.txt"),file.cpR("bar1.txt","baz1.txt"),assert.ok(existsSync("baz.txt")),assert.ok(existsSync("baz1.txt"));let t=fs.statSync("baz.txt"),e=fs.statSync("baz1.txt");assert.equal(488,4095&t.mode),assert.equal(484,4095&e.mode),file.rmRf("bar.txt"),file.rmRf("baz.txt"),file.rmRf("bar1.txt"),file.rmRf("baz1.txt")})),test("cpR keeps file mode when overwriting with preserveMode",(function(){fs.writeFileSync("bar.txt","w00t",{mode:493}),fs.writeFileSync("baz.txt","w00t!",{mode:484}),file.cpR("bar.txt","baz.txt",{silent:!0,preserveMode:!0}),assert.ok(existsSync("baz.txt"));let t=fs.statSync("baz.txt");assert.equal(493,511&t.mode),file.rmRf("bar.txt"),file.rmRf("baz.txt")})),test("cpR does not keep file mode when overwriting",(function(){fs.writeFileSync("bar.txt","w00t",{mode:502}),fs.writeFileSync("baz.txt","w00t!",{mode:484}),file.cpR("bar.txt","baz.txt"),assert.ok(existsSync("baz.txt"));let t=fs.statSync("baz.txt");assert.equal(484,511&t.mode),file.rmRf("bar.txt"),file.rmRf("baz.txt")})),test("cpR copies file mode recursively",(function(){fs.mkdirSync("foo"),fs.writeFileSync("foo/bar.txt","w00t",{mode:480}),file.cpR("foo","baz"),assert.ok(existsSync("baz"));let t=fs.statSync("baz/bar.txt");assert.equal(480,511&t.mode),file.rmRf("foo"),file.rmRf("baz")})),test("cpR keeps file mode recursively",(function(){fs.mkdirSync("foo"),fs.writeFileSync("foo/bar.txt","w00t",{mode:480}),fs.mkdirSync("baz"),fs.mkdirSync("baz/foo"),fs.writeFileSync("baz/foo/bar.txt","w00t!",{mode:493}),file.cpR("foo","baz",{silent:!0,preserveMode:!0}),assert.ok(existsSync("baz"));let t=fs.statSync("baz/foo/bar.txt");assert.equal(480,511&t.mode),file.rmRf("foo"),file.rmRf("baz")})),test("cpR copies directory mode recursively",(function(){fs.mkdirSync("foo",493),fs.mkdirSync("foo/bar",448),file.cpR("foo","bar"),assert.ok(existsSync("foo"));let t=fs.statSync("bar/bar");assert.equal(448,511&t.mode),file.rmRf("foo"),file.rmRf("bar")}))}));