From 703dec4a6f8c9bd5c0abc7c166f30a02fc3717ab Mon Sep 17 00:00:00 2001 From: JC Date: Sat, 15 Jul 2023 14:13:08 -0400 Subject: [PATCH 01/13] spawnCmd works as expected --- dev/node-fs-utils-dev/SpawnCmd.test.mjs | 15 ++++++- .../tests/dev-specific/spawnCmd-cwd.test.mjs | 44 +++++++++++++++++++ docs/src/dev/docs_readme_spawn_cmd.md | 1 + 3 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 dev/node-fs-utils-dev/tests/dev-specific/spawnCmd-cwd.test.mjs create mode 100644 docs/src/dev/docs_readme_spawn_cmd.md diff --git a/dev/node-fs-utils-dev/SpawnCmd.test.mjs b/dev/node-fs-utils-dev/SpawnCmd.test.mjs index 2d651ba..ee927c1 100644 --- a/dev/node-fs-utils-dev/SpawnCmd.test.mjs +++ b/dev/node-fs-utils-dev/SpawnCmd.test.mjs @@ -79,14 +79,18 @@ function writeToFile(fileName,data,space=2){ import {promisify} from 'node:util'; import {spawn,spawnSync} from 'node:child_process'; import {spawnExecCmd} from "##/dev/node-fs-utils-dev/SpawnCmd.mjs"; +import {cwd} from 'node:process'; +function assertEcho(actual,expected){ + assert.strictEqual(actual.replace(/\r/g,''),expected); +} describe('SpawnCmd.test.mjs', function(){ it('spawnExecCmd', async function(){ this.timeout(5000); let out; out = await spawnExecCmd('echo hi',[],{shell:true}); // console.log(out); - assert.strictEqual(out.stdout,'hi\n'); + assertEcho(out.stdout,'hi\n'); }); it('spawnSync', async function(){ this.timeout(5000); @@ -100,10 +104,17 @@ describe('SpawnCmd.test.mjs', function(){ // console.log(out); //UintArrasy // const tmp = new Uint8Array(stdout); - assert.strictEqual(hello,'hi\n'); + assertEcho(hello,'hi\n'); }); + }); +/** + * look at + * spawnCmd-cwd.test.mjs + * for device specific + */ +// describe('SpawnCmd.test.mjs experiments', function(){ /** * doesnt work diff --git a/dev/node-fs-utils-dev/tests/dev-specific/spawnCmd-cwd.test.mjs b/dev/node-fs-utils-dev/tests/dev-specific/spawnCmd-cwd.test.mjs new file mode 100644 index 0000000..9666314 --- /dev/null +++ b/dev/node-fs-utils-dev/tests/dev-specific/spawnCmd-cwd.test.mjs @@ -0,0 +1,44 @@ +import {describe, it} from "mocha"; +import {cwd} from "node:process"; +import {spawnExecCmd} from "##/dev/node-fs-utils-dev/SpawnCmd.mjs"; +import assert from "node:assert"; + +/** + * Device specific nt machine with cygwin + */ +describe('spawnCmd-cwd.test.mjs - cygwin', function(){ + it('spawnExecCmd cwd nt cygwin', async function(){ + //assuming cygwin + this.timeout(5000); + let out; + const currentDir = cwd(); + let shell + // shell = `C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`;//slow though + shell = true; //23 ms... vs like 1.5s with powershell + out = await spawnExecCmd('C:\\cygwin64\\bin\\pwd.exe',[],{shell,cwd:currentDir}); + const {stdout,output,status,signal,pid,stderr} = out; + assert.match(stdout.replace('\n',''),/nuxt3-win32-posix-path$/); + }); + it('spawnExecCmd cwd nt cygwin public', async function(){ + //assuming cygwin + const expected = '/cygdrive/c/Users/Public'; + this.timeout(5000); + let out; + let shell,cwd + shell = true; //23 ms... vs like 1.5s with powershell + cwd = "c:/Users/Public" + out = await spawnExecCmd('C:\\cygwin64\\bin\\pwd.exe',[],{shell,cwd}); + const {stdout,output,status,signal,pid,stderr} = out; + const actual = stdout.replace('\n',''); + assert.strictEqual(actual,expected); + // console.log(out); + }); + it('pnpm version', async function(){ + let out; + out = await spawnExecCmd('pnpm',['--version'],{shell:true}); + assert.match(out.stdout,/^\d+\.\d+\.\d+\n$/);//i.e. 8.6.5 + + // out = await spawnExecCmd('where.exe',['pnpm'],{shell:true}); + // assert.match(out.stdout,/^\d+\.\d+\.\d+\n$/);//i.e. 8.6.5 + }); +}); diff --git a/docs/src/dev/docs_readme_spawn_cmd.md b/docs/src/dev/docs_readme_spawn_cmd.md new file mode 100644 index 0000000..e183bcd --- /dev/null +++ b/docs/src/dev/docs_readme_spawn_cmd.md @@ -0,0 +1 @@ +# Spawn Cmd From d3e6d12a61573f408f19bb3ba9eb199246dbef00 Mon Sep 17 00:00:00 2001 From: JC Date: Sat, 15 Jul 2023 14:37:41 -0400 Subject: [PATCH 02/13] spawnCmd works as expected --- .../tests/dev-specific/spawnCmd-cwd.test.mjs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/dev/node-fs-utils-dev/tests/dev-specific/spawnCmd-cwd.test.mjs b/dev/node-fs-utils-dev/tests/dev-specific/spawnCmd-cwd.test.mjs index 9666314..805ddf4 100644 --- a/dev/node-fs-utils-dev/tests/dev-specific/spawnCmd-cwd.test.mjs +++ b/dev/node-fs-utils-dev/tests/dev-specific/spawnCmd-cwd.test.mjs @@ -2,7 +2,7 @@ import {describe, it} from "mocha"; import {cwd} from "node:process"; import {spawnExecCmd} from "##/dev/node-fs-utils-dev/SpawnCmd.mjs"; import assert from "node:assert"; - +import {resolve} from "node:path/posix"; /** * Device specific nt machine with cygwin */ @@ -41,4 +41,19 @@ describe('spawnCmd-cwd.test.mjs - cygwin', function(){ // out = await spawnExecCmd('where.exe',['pnpm'],{shell:true}); // assert.match(out.stdout,/^\d+\.\d+\.\d+\n$/);//i.e. 8.6.5 }); + it('parent of filepath exists', async function(){ + const childFolderInput = '/cygdrive/c/Users/Public/Downloads'; + const expected = '/cygdrive/c/Users/Public'; + const actual = resolve(childFolderInput,'..'); + assert.strictEqual(actual,expected); + + }); + //works as expected + it('parent of filepath dne', async function(){ + const childFolderInput = '/cygdrive/c/Users/Public/fsdfsdce'; + const expected = '/cygdrive/c/Users/Public'; + const actual = resolve(childFolderInput,'..'); + assert.strictEqual(actual,expected); + + }); }); From cadf2a451e90eceab268f8773b0472378d3a4cc5 Mon Sep 17 00:00:00 2001 From: JC Date: Sat, 15 Jul 2023 23:29:15 -0400 Subject: [PATCH 03/13] updated spawnCmd-cwd.test.mjs --- .run/spawncmd empty env.run.xml | 17 +++++++ app.vue | 6 ++- .../tests/dev-specific/spawnCmd-cwd.test.mjs | 46 +++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 .run/spawncmd empty env.run.xml diff --git a/.run/spawncmd empty env.run.xml b/.run/spawncmd empty env.run.xml new file mode 100644 index 0000000..9d2b8e4 --- /dev/null +++ b/.run/spawncmd empty env.run.xml @@ -0,0 +1,17 @@ + + + project + + $PROJECT_DIR$/node_modules/mocha + $PROJECT_DIR$ + false + bdd + + SUITE + $PROJECT_DIR$/dev/node-fs-utils-dev/tests/dev-specific/spawnCmd-cwd.test.mjs + + + + + + \ No newline at end of file diff --git a/app.vue b/app.vue index d1fd51d..896887f 100644 --- a/app.vue +++ b/app.vue @@ -82,7 +82,11 @@ export default { [ "C:\\Users\\Public\\Documents", "C:\\\\Users\\\\Public\\\\Documents", - "C:\\Users\\Public\\temp spaces\\a\\b c\\d" + "C:\\Users\\Public\\temp spaces\\a\\b c\\d", + `"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"`, + `C:\\progra~1\\PowerShell\\7\\pwsh.exe`, + `C:\\cygwin64\\bin\\bash.exe`, + `C:\\Windows\\System32\\cmd.exe` ].join('\n'), } }, diff --git a/dev/node-fs-utils-dev/tests/dev-specific/spawnCmd-cwd.test.mjs b/dev/node-fs-utils-dev/tests/dev-specific/spawnCmd-cwd.test.mjs index 805ddf4..d87ab03 100644 --- a/dev/node-fs-utils-dev/tests/dev-specific/spawnCmd-cwd.test.mjs +++ b/dev/node-fs-utils-dev/tests/dev-specific/spawnCmd-cwd.test.mjs @@ -3,6 +3,7 @@ import {cwd} from "node:process"; import {spawnExecCmd} from "##/dev/node-fs-utils-dev/SpawnCmd.mjs"; import assert from "node:assert"; import {resolve} from "node:path/posix"; +import {spawnSync} from "node:child_process"; /** * Device specific nt machine with cygwin */ @@ -57,3 +58,48 @@ describe('spawnCmd-cwd.test.mjs - cygwin', function(){ }); }); + + +/** + * spawnSyncAssert - for testing... maybe export later + * @param cmd + * @param args + * @param expected + * @param options + * @return {SpawnSyncReturns} + */ +function spawnSyncAssert(cmd,args,expected,options={}){ + const actualOptions = {shell:true,...options}; + const out = spawnSync(cmd,args,actualOptions) + if(out.status !==0){ + console.error('stderr: ',out.stderr?.toString()); + console.error(out.error) + throw out.error; + } + const stdout = out.stdout?.toString(); + assert.strictEqual(stdout,expected) + return out; + +} +/** + * Empty webstorm runner. + * i.e. no env variables, no runner. save to project file + */ +describe('spawncmd empty env', function(){ + it('spawnSync diff shell - no env',function(){ + const expected = 'hi\n'; + const options = { + shell:true, + } + const output = spawnSyncAssert('echo',['hi'],expected,options) + }) + it('spawnSync - no env',function(){ + const expected = 'hi\n'; + const output = spawnSyncAssert('echo',['hi'],expected) + }) + it('printenv spawnsync - no env',function(){ + const expected = 'hi\n'; + const output = spawnSyncAssert('set',[],expected) + }) + +}); \ No newline at end of file From d88d1e9a86ee28fc9ad0fec2e0dac5ddbf81e6b4 Mon Sep 17 00:00:00 2001 From: JC Date: Sat, 15 Jul 2023 23:29:46 -0400 Subject: [PATCH 04/13] added ghGen --- .run/ghGenerateAndDeploy.run.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .run/ghGenerateAndDeploy.run.xml diff --git a/.run/ghGenerateAndDeploy.run.xml b/.run/ghGenerateAndDeploy.run.xml new file mode 100644 index 0000000..7764ddb --- /dev/null +++ b/.run/ghGenerateAndDeploy.run.xml @@ -0,0 +1,12 @@ + + + + + +