@@ -4,20 +4,53 @@ const common = require('../common');
4
4
const fs = require ( 'fs' ) ;
5
5
const path = require ( 'path' ) ;
6
6
const tmpdir = require ( '../../test/common/tmpdir' ) ;
7
- tmpdir . refresh ( ) ;
8
7
9
8
const bench = common . createBenchmark ( main , {
10
9
n : [ 1 , 100 , 10_000 ] ,
10
+ dereference : [ 'true' , 'false' ] ,
11
+ force : [ 'true' , 'false' ] ,
11
12
} ) ;
12
13
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 } ) {
14
29
tmpdir . refresh ( ) ;
15
- const options = { recursive : true } ;
16
- const src = path . join ( __dirname , '../../test/fixtures/copy' ) ;
30
+
31
+ const src = prepareTestDirectory ( ) ;
17
32
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
+
18
44
bench . start ( ) ;
19
45
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
+ }
21
54
}
22
55
bench . end ( n ) ;
23
56
}
0 commit comments