@@ -95,6 +95,39 @@ function nextdir() {
9595}
9696
9797
98+ // It resolves relative symlinks to absolute path when absolute is true
99+ {
100+ const src = nextdir ( ) ;
101+ mkdirSync ( src , { recursive : true } ) ;
102+ writeFileSync ( join ( src , 'foo.js' ) , 'foo' , 'utf8' ) ;
103+ symlinkSync ( 'foo.js' , join ( src , 'bar.js' ) ) ;
104+
105+ const dest = nextdir ( ) ;
106+ mkdirSync ( dest , { recursive : true } ) ;
107+
108+ cpSync ( src , dest , { recursive : true , absolute : true } ) ;
109+ const link = readlinkSync ( join ( dest , 'bar.js' ) ) ;
110+ assert . strictEqual ( link , join ( src , 'foo.js' ) ) ;
111+ }
112+
113+
114+ // It copies relative symlink when absolute is false
115+ {
116+ const src = nextdir ( ) ;
117+ mkdirSync ( src , { recursive : true } ) ;
118+ writeFileSync ( join ( src , 'foo.js' ) , 'foo' , 'utf8' ) ;
119+ symlinkSync ( 'foo.js' , join ( src , 'bar.js' ) ) ;
120+
121+ const dest = nextdir ( ) ;
122+ mkdirSync ( dest , { recursive : true } ) ;
123+ const destFile = join ( dest , 'foo.js' ) ;
124+
125+ cpSync ( src , dest , { recursive : true , absolute : false } ) ;
126+ const link = readlinkSync ( join ( dest , 'bar.js' ) ) ;
127+ assert . strictEqual ( link , 'foo.js' ) ;
128+ }
129+
130+
98131// It throws error when src and dest are identical.
99132{
100133 const src = './test/fixtures/copy/kitchen-sink' ;
0 commit comments