Skip to content

Commit 061a0f7

Browse files
fixed isDirectorySync
1 parent 095062c commit 061a0f7

File tree

6 files changed

+162
-152
lines changed

6 files changed

+162
-152
lines changed

Gruntfile.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ function make(grunt) {
7272
//------ Add Test Tasks
7373
grunt.registerTask('ospec', () => { require('child_process').spawnSync('./node_modules/.bin/ospec', {stdio: 'inherit'}); });
7474
grunt.registerTask('jest', () => launchJest().status===0)
75-
grunt.registerTask('commit', () => commit().status===0)
75+
grunt.registerTask('commit', () => [0,commit().status][0])
7676
grunt.registerTask('test', ['clean:cov', 'jest', 'copy:coverage', 'cleanupCoverage']);
7777

7878
//------ Add Coverage Reporting

docs/data/hsNode.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3328,7 +3328,7 @@
33283328
"sources": [
33293329
{
33303330
"fileName": "sth1pal/Documents/Development/code/ts/hsLibs/node/hsNode/src/fsUtil.ts",
3331-
"line": 402,
3331+
"line": 403,
33323332
"character": 30
33333333
}
33343334
]
@@ -4711,7 +4711,7 @@
47114711
"sources": [
47124712
{
47134713
"fileName": "sth1pal/Documents/Development/code/ts/hsLibs/node/hsNode/src/fsUtil.ts",
4714-
"line": 415,
4714+
"line": 417,
47154715
"character": 28
47164716
}
47174717
]
@@ -4773,7 +4773,7 @@
47734773
"sources": [
47744774
{
47754775
"fileName": "sth1pal/Documents/Development/code/ts/hsLibs/node/hsNode/src/fsUtil.ts",
4776-
"line": 438,
4776+
"line": 440,
47774777
"character": 31
47784778
}
47794779
]
@@ -4822,7 +4822,7 @@
48224822
"sources": [
48234823
{
48244824
"fileName": "sth1pal/Documents/Development/code/ts/hsLibs/node/hsNode/src/fsUtil.ts",
4825-
"line": 448,
4825+
"line": 450,
48264826
"character": 29
48274827
}
48284828
]
@@ -4868,7 +4868,7 @@
48684868
"sources": [
48694869
{
48704870
"fileName": "sth1pal/Documents/Development/code/ts/hsLibs/node/hsNode/src/fsUtil.ts",
4871-
"line": 422,
4871+
"line": 424,
48724872
"character": 26
48734873
}
48744874
]

docs/data/src/hsNode/coverage/fsUtil.ts.html

Lines changed: 70 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -23,30 +23,30 @@ <h1><a href="index.html">hsNode: All files</a> fsUtil.ts</h1>
2323
<div class='clearfix'>
2424

2525
<div class='fl pad1y space-right2'>
26-
<span class="strong">67.3% </span>
26+
<span class="strong">73.71% </span>
2727
<span class="quiet">Statements</span>
28-
<span class='fraction'>142/211</span>
28+
<span class='fraction'>157/213</span>
2929
</div>
3030

3131

3232
<div class='fl pad1y space-right2'>
33-
<span class="strong">51.52% </span>
33+
<span class="strong">53.03% </span>
3434
<span class="quiet">Branches</span>
35-
<span class='fraction'>34/66</span>
35+
<span class='fraction'>35/66</span>
3636
</div>
3737

3838

3939
<div class='fl pad1y space-right2'>
40-
<span class="strong">75.38% </span>
40+
<span class="strong">78.46% </span>
4141
<span class="quiet">Functions</span>
42-
<span class='fraction'>49/65</span>
42+
<span class='fraction'>51/65</span>
4343
</div>
4444

4545

4646
<div class='fl pad1y space-right2'>
47-
<span class="strong">68.06% </span>
47+
<span class="strong">74.09% </span>
4848
<span class="quiet">Lines</span>
49-
<span class='fraction'>130/191</span>
49+
<span class='fraction'>143/193</span>
5050
</div>
5151

5252

@@ -514,7 +514,9 @@ <h1><a href="index.html">hsNode: All files</a> fsUtil.ts</h1>
514514
<a name='L455'></a><a href='#L455'>455</a>
515515
<a name='L456'></a><a href='#L456'>456</a>
516516
<a name='L457'></a><a href='#L457'>457</a>
517-
<a name='L458'></a><a href='#L458'>458</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
517+
<a name='L458'></a><a href='#L458'>458</a>
518+
<a name='L459'></a><a href='#L459'>459</a>
519+
<a name='L460'></a><a href='#L460'>460</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
518520
<span class="cline-any cline-neutral">&nbsp;</span>
519521
<span class="cline-any cline-neutral">&nbsp;</span>
520522
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -562,21 +564,21 @@ <h1><a href="index.html">hsNode: All files</a> fsUtil.ts</h1>
562564
<span class="cline-any cline-neutral">&nbsp;</span>
563565
<span class="cline-any cline-neutral">&nbsp;</span>
564566
<span class="cline-any cline-neutral">&nbsp;</span>
565-
<span class="cline-any cline-yes">218x</span>
566-
<span class="cline-any cline-yes">206x</span>
567-
<span class="cline-any cline-yes">206x</span>
568-
<span class="cline-any cline-yes">206x</span>
567+
<span class="cline-any cline-yes">242x</span>
568+
<span class="cline-any cline-yes">229x</span>
569+
<span class="cline-any cline-yes">229x</span>
570+
<span class="cline-any cline-yes">229x</span>
569571
<span class="cline-any cline-no">&nbsp;</span>
570572
<span class="cline-any cline-no">&nbsp;</span>
571573
<span class="cline-any cline-neutral">&nbsp;</span>
572-
<span class="cline-any cline-yes">206x</span>
574+
<span class="cline-any cline-yes">229x</span>
573575
<span class="cline-any cline-neutral">&nbsp;</span>
574576
<span class="cline-any cline-neutral">&nbsp;</span>
575577
<span class="cline-any cline-neutral">&nbsp;</span>
576578
<span class="cline-any cline-neutral">&nbsp;</span>
577-
<span class="cline-any cline-yes">7x</span>
578-
<span class="cline-any cline-yes">7x</span>
579-
<span class="cline-any cline-yes">6x</span>
579+
<span class="cline-any cline-yes">834x</span>
580+
<span class="cline-any cline-yes">834x</span>
581+
<span class="cline-any cline-yes">833x</span>
580582
<span class="cline-any cline-neutral">&nbsp;</span>
581583
<span class="cline-any cline-neutral">&nbsp;</span>
582584
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -612,13 +614,13 @@ <h1><a href="index.html">hsNode: All files</a> fsUtil.ts</h1>
612614
<span class="cline-any cline-neutral">&nbsp;</span>
613615
<span class="cline-any cline-neutral">&nbsp;</span>
614616
<span class="cline-any cline-yes">4x</span>
615-
<span class="cline-any cline-yes">221x</span>
616-
<span class="cline-any cline-yes">221x</span>
617+
<span class="cline-any cline-yes">245x</span>
618+
<span class="cline-any cline-yes">245x</span>
617619
<span class="cline-any cline-neutral">&nbsp;</span>
618620
<span class="cline-any cline-neutral">&nbsp;</span>
619621
<span class="cline-any cline-neutral">&nbsp;</span>
620622
<span class="cline-any cline-yes">4x</span>
621-
<span class="cline-any cline-yes">7x</span>
623+
<span class="cline-any cline-yes">834x</span>
622624
<span class="cline-any cline-yes">1x</span>
623625
<span class="cline-any cline-neutral">&nbsp;</span>
624626
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -677,14 +679,14 @@ <h1><a href="index.html">hsNode: All files</a> fsUtil.ts</h1>
677679
<span class="cline-any cline-neutral">&nbsp;</span>
678680
<span class="cline-any cline-neutral">&nbsp;</span>
679681
<span class="cline-any cline-yes">4x</span>
680-
<span class="cline-any cline-yes">208x</span>
681-
<span class="cline-any cline-yes">208x</span>
682+
<span class="cline-any cline-yes">232x</span>
683+
<span class="cline-any cline-yes">232x</span>
682684
<span class="cline-any cline-neutral">&nbsp;</span>
683-
<span class="cline-any cline-yes">9x</span>
685+
<span class="cline-any cline-yes">10x</span>
684686
<span class="cline-any cline-neutral">&nbsp;</span>
685687
<span class="cline-any cline-neutral">&nbsp;</span>
686688
<span class="cline-any cline-yes">4x</span>
687-
<span class="cline-any cline-yes">5x</span>
689+
<span class="cline-any cline-yes">827x</span>
688690
<span class="cline-any cline-neutral">&nbsp;</span>
689691
<span class="cline-any cline-neutral">&nbsp;</span>
690692
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -712,34 +714,34 @@ <h1><a href="index.html">hsNode: All files</a> fsUtil.ts</h1>
712714
<span class="cline-any cline-neutral">&nbsp;</span>
713715
<span class="cline-any cline-neutral">&nbsp;</span>
714716
<span class="cline-any cline-yes">4x</span>
715-
<span class="cline-any cline-yes">15x</span>
716-
<span class="cline-any cline-yes">15x</span>
717-
<span class="cline-any cline-neutral">&nbsp;</span>
718-
<span class="cline-any cline-yes">179x</span>
719-
<span class="cline-any cline-yes">15x</span>
720-
<span class="cline-any cline-yes">179x</span>
721-
<span class="cline-any cline-yes">179x</span>
722-
<span class="cline-any cline-yes">179x</span>
723-
<span class="cline-any cline-yes">6x</span>
717+
<span class="cline-any cline-yes">18x</span>
718+
<span class="cline-any cline-yes">18x</span>
724719
<span class="cline-any cline-neutral">&nbsp;</span>
725-
<span class="cline-any cline-no">&nbsp;</span>
726-
<span class="cline-any cline-no">&nbsp;</span>
727-
<span class="cline-any cline-no">&nbsp;</span>
728-
<span class="cline-any cline-no">&nbsp;</span>
720+
<span class="cline-any cline-yes">203x</span>
721+
<span class="cline-any cline-yes">18x</span>
722+
<span class="cline-any cline-yes">203x</span>
723+
<span class="cline-any cline-yes">203x</span>
724+
<span class="cline-any cline-yes">203x</span>
725+
<span class="cline-any cline-yes">7x</span>
726+
<span class="cline-any cline-neutral">&nbsp;</span>
727+
<span class="cline-any cline-yes">1x</span>
728+
<span class="cline-any cline-yes">1x</span>
729+
<span class="cline-any cline-yes">1x</span>
730+
<span class="cline-any cline-yes">1x</span>
729731
<span class="cline-any cline-neutral">&nbsp;</span>
730732
<span class="cline-any cline-neutral">&nbsp;</span>
731733
<span class="cline-any cline-neutral">&nbsp;</span>
732-
<span class="cline-any cline-yes">15x</span>
734+
<span class="cline-any cline-yes">17x</span>
733735
<span class="cline-any cline-neutral">&nbsp;</span>
734736
<span class="cline-any cline-yes">4x</span>
735-
<span class="cline-any cline-no">&nbsp;</span>
736-
<span class="cline-any cline-no">&nbsp;</span>
737+
<span class="cline-any cline-yes">82x</span>
738+
<span class="cline-any cline-yes">82x</span>
737739
<span class="cline-any cline-neutral">&nbsp;</span>
738-
<span class="cline-any cline-no">&nbsp;</span>
739-
<span class="cline-any cline-no">&nbsp;</span>
740-
<span class="cline-any cline-no">&nbsp;</span>
741-
<span class="cline-any cline-no">&nbsp;</span>
742-
<span class="cline-any cline-no">&nbsp;</span>
740+
<span class="cline-any cline-yes">822x</span>
741+
<span class="cline-any cline-yes">82x</span>
742+
<span class="cline-any cline-yes">822x</span>
743+
<span class="cline-any cline-yes">822x</span>
744+
<span class="cline-any cline-yes">822x</span>
743745
<span class="cline-any cline-no">&nbsp;</span>
744746
<span class="cline-any cline-neutral">&nbsp;</span>
745747
<span class="cline-any cline-no">&nbsp;</span>
@@ -749,7 +751,7 @@ <h1><a href="index.html">hsNode: All files</a> fsUtil.ts</h1>
749751
<span class="cline-any cline-neutral">&nbsp;</span>
750752
<span class="cline-any cline-neutral">&nbsp;</span>
751753
<span class="cline-any cline-neutral">&nbsp;</span>
752-
<span class="cline-any cline-no">&nbsp;</span>
754+
<span class="cline-any cline-yes">82x</span>
753755
<span class="cline-any cline-neutral">&nbsp;</span>
754756
<span class="cline-any cline-neutral">&nbsp;</span>
755757
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -912,14 +914,16 @@ <h1><a href="index.html">hsNode: All files</a> fsUtil.ts</h1>
912914
<span class="cline-any cline-yes">4x</span>
913915
<span class="cline-any cline-yes">3x</span>
914916
<span class="cline-any cline-yes">3x</span>
915-
<span class="cline-any cline-yes">3x</span>
916-
<span class="cline-any cline-yes">1x</span>
917+
<span class="cline-any cline-yes">2x</span>
918+
<span class="cline-any cline-yes">2x</span>
919+
<span class="cline-any cline-no">&nbsp;</span>
917920
<span class="cline-any cline-neutral">&nbsp;</span>
918921
<span class="cline-any cline-yes">4x</span>
919922
<span class="cline-any cline-yes">82x</span>
920923
<span class="cline-any cline-yes">82x</span>
921924
<span class="cline-any cline-yes">82x</span>
922925
<span class="cline-any cline-yes">82x</span>
926+
<span class="cline-any cline-yes">82x</span>
923927
<span class="cline-any cline-no">&nbsp;</span>
924928
<span class="cline-any cline-neutral">&nbsp;</span>
925929
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -1141,7 +1145,7 @@ <h1><a href="index.html">hsNode: All files</a> fsUtil.ts</h1>
11411145
}
11421146
}
11431147
export function isDirectorySync(thePath:string):boolean {
1144-
return fs.statSync(thePath)?.isDirectory() ?? <span class="branch-1 cbranch-no" title="branch not covered" >false;</span>
1148+
return statSync(thePath)?.isDirectory() ?? <span class="branch-1 cbranch-no" title="branch not covered" >false;</span>
11451149
}
11461150
&nbsp;
11471151
/**
@@ -1179,24 +1183,24 @@ <h1><a href="index.html">hsNode: All files</a> fsUtil.ts</h1>
11791183
if (!exists) { try {
11801184
await fs.promises.mkdir(dir);
11811185
} catch(e) {
1182-
<span class="cstat-no" title="statement not covered" > if (e?.code !== 'EEXIST') {</span>
1183-
<span class="cstat-no" title="statement not covered" > console.warn(`error in mkdirs: ${e?.code}`);</span>
1184-
<span class="cstat-no" title="statement not covered" > console.warn(e); </span>
1185-
<span class="cstat-no" title="statement not covered" > throw `mkdir failed for ${dir}: ${p}\n${e}`;</span>
1186+
<span class="missing-if-branch" title="else path not taken" >E</span>if (e?.code !== 'EEXIST') {
1187+
console.warn(`error in mkdirs: ${e?.code}`);
1188+
console.warn(e);
1189+
throw `mkdir failed for ${dir}: ${p}\n${e}`;
11861190
}
11871191
}}
11881192
}
11891193
return p;
11901194
}
1191-
export function <span class="fstat-no" title="function not covered" >mkdirsSync(</span>thePath:string):string {
1192-
const p = <span class="cstat-no" title="statement not covered" >path.normalize(path.resolve(process.cwd(),thePath));</span>
1193-
let dirs = <span class="cstat-no" title="statement not covered" >p.split('/');</span>
1195+
export function mkdirsSync(thePath:string):string {
1196+
const p = path.normalize(path.resolve(process.cwd(),thePath));
1197+
let dirs = p.split('/');
11941198
// create complete successive subdirs from the split
1195-
<span class="cstat-no" title="statement not covered" > dirs = dirs.map(<span class="fstat-no" title="function not covered" >(d</span>ir, i) =&gt; <span class="cstat-no" title="statement not covered" >dirs.slice(0,i+1).join('/'))</span>;</span>
1196-
<span class="cstat-no" title="statement not covered" > for (let i=<span class="cstat-no" title="statement not covered" >0;</span> i&lt;dirs.length; i++) {</span>
1197-
const dir = <span class="cstat-no" title="statement not covered" >dirs[i];</span>
1198-
const exists = <span class="cstat-no" title="statement not covered" >isDirectorySync(dir);</span>
1199-
<span class="cstat-no" title="statement not covered" > if (!exists) { <span class="cstat-no" title="statement not covered" >try { </span></span>
1199+
dirs = dirs.map((dir, i) =&gt; dirs.slice(0,i+1).join('/'));
1200+
for (let i=0; i&lt;dirs.length; i++) {
1201+
const dir = dirs[i];
1202+
const exists = isDirectorySync(dir);
1203+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!exists) { <span class="cstat-no" title="statement not covered" >try { </span>
12001204
<span class="cstat-no" title="statement not covered" > fs.mkdirSync(dir);</span>
12011205
} catch(e) {
12021206
<span class="cstat-no" title="statement not covered" > if (e?.code !== 'EEXIST') {</span>
@@ -1206,7 +1210,7 @@ <h1><a href="index.html">hsNode: All files</a> fsUtil.ts</h1>
12061210
}
12071211
}}
12081212
}
1209-
<span class="cstat-no" title="statement not covered" > return p;</span>
1213+
return p;
12101214
}
12111215
&nbsp;
12121216
/**
@@ -1368,12 +1372,14 @@ <h1><a href="index.html">hsNode: All files</a> fsUtil.ts</h1>
13681372
*/
13691373
export async function appendFile(thePath:string, content:string, isText:boolean=<span class="branch-0 cbranch-no" title="branch not covered" >true)</span>:Promise&lt;string&gt; {
13701374
var encoding:any = isText? <span class="branch-0 cbranch-no" title="branch not covered" >'utf8' </span>: {encoding: null};
1375+
await mkdirs(path.dirname(thePath));
13711376
try { return await new Promise((resolve, reject) =&gt; {
1372-
fs.appendFile(thePath, content, encoding, (err:any) =&gt; err? reject(err) : resolve(thePath));
1373-
})} catch(e) { error(e); };
1377+
fs.appendFile(thePath, content, encoding, (err:any) =&gt; err? <span class="branch-0 cbranch-no" title="branch not covered" >reject(err) </span>: resolve(thePath));
1378+
})} catch(e) { <span class="cstat-no" title="statement not covered" >error(e); </span>};
13741379
}
13751380
export function appendFileSync(thePath:string, content:string, isText:boolean=true):string {
13761381
var encoding:any = isText? 'utf8' : <span class="branch-1 cbranch-no" title="branch not covered" >{encoding: null};</span>
1382+
mkdirsSync(path.dirname(thePath));
13771383
try {
13781384
fs.appendFileSync(thePath, content, encoding);
13791385
return thePath;

0 commit comments

Comments
 (0)