@@ -4,20 +4,53 @@ const common = require('../common');
44const  fs  =  require ( 'fs' ) ; 
55const  path  =  require ( 'path' ) ; 
66const  tmpdir  =  require ( '../../test/common/tmpdir' ) ; 
7- tmpdir . refresh ( ) ; 
87
98const  bench  =  common . createBenchmark ( main ,  { 
109  n : [ 1 ,  100 ,  10_000 ] , 
10+   dereference : [ 'true' ,  'false' ] , 
11+   force : [ 'true' ,  'false' ] , 
1112} ) ; 
1213
13- function  main ( {  n } )  { 
14+ function  prepareTestDirectory ( )  { 
15+   const  testDir  =  tmpdir . resolve ( `test-cp-${ process . pid }  ` ) ; 
16+   fs . mkdirSync ( testDir ,  {  recursive : true  } ) ; 
17+ 
18+   fs . writeFileSync ( path . join ( testDir ,  'source.txt' ) ,  'test content' ) ; 
19+ 
20+   fs . symlinkSync ( 
21+     path . join ( testDir ,  'source.txt' ) , 
22+     path . join ( testDir ,  'link.txt' ) , 
23+   ) ; 
24+ 
25+   return  testDir ; 
26+ } 
27+ 
28+ function  main ( {  n,  dereference,  force } )  { 
1429  tmpdir . refresh ( ) ; 
15-    const   options   =   {   recursive :  true   } ; 
16-   const  src  =  path . join ( __dirname ,   '../../test/fixtures/copy' ) ; 
30+ 
31+   const  src  =  prepareTestDirectory ( ) ; 
1732  const  dest  =  tmpdir . resolve ( `${ process . pid }  /subdir/cp-bench-${ process . pid }  ` ) ; 
33+ 
34+   const  options  =  { 
35+     recursive : true , 
36+     dereference : dereference  ===  'true' , 
37+     force : force  ===  'true' , 
38+   } ; 
39+ 
40+   if  ( options . force )  { 
41+     fs . cpSync ( src ,  dest ,  {  recursive : true  } ) ; 
42+   } 
43+ 
1844  bench . start ( ) ; 
1945  for  ( let  i  =  0 ;  i  <  n ;  i ++ )  { 
20-     fs . cpSync ( src ,  dest ,  options ) ; 
46+     if  ( options . force )  { 
47+       fs . cpSync ( src ,  dest ,  options ) ; 
48+     }  else  { 
49+       const  uniqueDest  =  tmpdir . resolve ( 
50+         `${ process . pid }  /subdir/cp-bench-${ process . pid }  -${ i }  ` , 
51+       ) ; 
52+       fs . cpSync ( src ,  uniqueDest ,  options ) ; 
53+     } 
2154  } 
2255  bench . end ( n ) ; 
2356} 
0 commit comments