@@ -91,10 +91,17 @@ func createSampleDir(t *testing.T, root string) {
9191 provisionSampleDir (t , root , files )
9292}
9393
94- func provisionSampleDir (t * testing.T , root string , files []FileData ) {
94+ func provisionSampleDir (t * testing.T , rootPath string , files []FileData ) {
95+ t .Helper ()
96+
97+ root , err := os .OpenRoot (rootPath )
98+ assert .NilError (t , err )
99+ t .Cleanup (func () { _ = root .Close () })
100+
95101 now := time .Now ()
96102 for _ , info := range files {
97- p := path .Join (root , info .path )
103+ name := path .Clean (info .path )
104+ p := filepath .Join (rootPath , filepath .FromSlash (name ))
98105 switch info .filetype {
99106 case Dir :
100107 err := os .MkdirAll (p , info .permissions )
@@ -109,7 +116,7 @@ func provisionSampleDir(t *testing.T, root string, files []FileData) {
109116
110117 if info .filetype != Symlink {
111118 // Set a consistent ctime, atime for all files and dirs
112- err := chtimes (p , now , now )
119+ err := chtimes (root , filepath . FromSlash ( name ) , now , now )
113120 assert .NilError (t , err )
114121 }
115122 }
@@ -267,66 +274,70 @@ func TestChangesDirsEmpty(t *testing.T) {
267274 assert .NilError (t , os .RemoveAll (dst ))
268275}
269276
270- func mutateSampleDir (t * testing.T , root string ) {
277+ func mutateSampleDir (t * testing.T , rootPath string ) {
278+ root , err := os .OpenRoot (rootPath )
279+ assert .NilError (t , err )
280+ t .Cleanup (func () { _ = root .Close () })
281+
271282 // Remove a regular file
272- err := os .RemoveAll (path . Join ( root , "file1" ) )
283+ err = root .RemoveAll ("file1" )
273284 assert .NilError (t , err )
274285
275286 // Remove a directory
276- err = os .RemoveAll (path . Join ( root , "dir1" ) )
287+ err = root .RemoveAll ("dir1" )
277288 assert .NilError (t , err )
278289
279290 // Remove a symlink
280- err = os .RemoveAll (path . Join ( root , "symlink1" ) )
291+ err = root .RemoveAll ("symlink1" )
281292 assert .NilError (t , err )
282293
283294 // Rewrite a file
284- err = os .WriteFile (path . Join ( root , "file2" ) , []byte ("fileNN\n " ), 0o777 )
295+ err = root .WriteFile ("file2" , []byte ("fileNN\n " ), 0o777 )
285296 assert .NilError (t , err )
286297
287298 // Replace a file
288- err = os .RemoveAll (path . Join ( root , "file3" ) )
299+ err = root .RemoveAll ("file3" )
289300 assert .NilError (t , err )
290- err = os .WriteFile (path . Join ( root , "file3" ) , []byte ("fileMM\n " ), 0o404 )
301+ err = root .WriteFile ("file3" , []byte ("fileMM\n " ), 0o404 )
291302 assert .NilError (t , err )
292303
293304 // Touch file
294- err = chtimes (path . Join ( root , "file4" ) , time .Now ().Add (time .Second ), time .Now ().Add (time .Second ))
305+ err = chtimes (root , "file4" , time .Now ().Add (time .Second ), time .Now ().Add (time .Second ))
295306 assert .NilError (t , err )
296307
297308 // Replace file with dir
298- err = os .RemoveAll (path . Join ( root , "file5" ) )
309+ err = root .RemoveAll ("file5" )
299310 assert .NilError (t , err )
300- err = os . MkdirAll ( path . Join ( root , "file5" ) , 0o666 )
311+ err = root . Mkdir ( "file5" , 0o666 )
301312 assert .NilError (t , err )
302313
303314 // Create new file
304- err = os .WriteFile (path . Join ( root , "filenew" ) , []byte ("filenew\n " ), 0o777 )
315+ err = root .WriteFile ("filenew" , []byte ("filenew\n " ), 0o777 )
305316 assert .NilError (t , err )
306317
307318 // Create new dir
308- err = os .MkdirAll (path . Join ( root , "dirnew" ) , 0o766 )
319+ err = root .MkdirAll ("dirnew" , 0o766 )
309320 assert .NilError (t , err )
310321
311322 // Create a new symlink
312- err = os .Symlink ("targetnew" , path . Join ( root , "symlinknew" ) )
323+ err = root .Symlink ("targetnew" , "symlinknew" )
313324 assert .NilError (t , err )
314325
315326 // Change a symlink
316- err = os .RemoveAll (path . Join ( root , "symlink2" ) )
327+ err = root .RemoveAll ("symlink2" )
317328 assert .NilError (t , err )
318329
319- err = os .Symlink ("target2change" , path . Join ( root , "symlink2" ) )
330+ err = root .Symlink ("target2change" , "symlink2" )
320331 assert .NilError (t , err )
321332
322333 // Replace dir with file
323- err = os .RemoveAll (path . Join ( root , "dir2" ) )
334+ err = root .RemoveAll ("dir2" )
324335 assert .NilError (t , err )
325- err = os .WriteFile (path . Join ( root , "dir2" ) , []byte ("dir2\n " ), 0o777 )
336+ err = root .WriteFile ("dir2" , []byte ("dir2\n " ), 0o777 )
326337 assert .NilError (t , err )
327338
328339 // Touch dir
329- err = chtimes (path . Join ( root , "dir3" ) , time .Now ().Add (time .Second ), time .Now ().Add (time .Second ))
340+ err = chtimes (root , "dir3" , time .Now ().Add (time .Second ), time .Now ().Add (time .Second ))
330341 assert .NilError (t , err )
331342}
332343
0 commit comments