@@ -44,6 +44,43 @@ func TestCopyGuestDirectory(t *testing.T) {
4444 assert .Equal (t , "metadata.json" , linkTarget )
4545}
4646
47+ func TestCopyGuestDirectoryWithOptionsSkipsRelativePaths (t * testing.T ) {
48+ src := filepath .Join (t .TempDir (), "src" )
49+ dst := filepath .Join (t .TempDir (), "dst" )
50+
51+ require .NoError (t , os .MkdirAll (filepath .Join (src , "snapshots" , "snapshot-latest" ), 0755 ))
52+ require .NoError (t , os .WriteFile (filepath .Join (src , "snapshots" , "snapshot-latest" , "memory" ), []byte ("memory" ), 0644 ))
53+ require .NoError (t , os .WriteFile (filepath .Join (src , "snapshots" , "snapshot-latest" , "state" ), []byte ("state" ), 0644 ))
54+ require .NoError (t , os .WriteFile (filepath .Join (src , "overlay.raw" ), []byte ("overlay" ), 0644 ))
55+
56+ require .NoError (t , CopyGuestDirectoryWithOptions (src , dst , CopyOptions {
57+ SkipRelativePaths : map [string ]struct {}{
58+ filepath .Join ("snapshots" , "snapshot-latest" , "memory" ): {},
59+ },
60+ }))
61+
62+ assert .NoFileExists (t , filepath .Join (dst , "snapshots" , "snapshot-latest" , "memory" ))
63+ assert .FileExists (t , filepath .Join (dst , "snapshots" , "snapshot-latest" , "state" ))
64+ assert .FileExists (t , filepath .Join (dst , "overlay.raw" ))
65+ }
66+
67+ func TestCopyRegularFile (t * testing.T ) {
68+ src := filepath .Join (t .TempDir (), "src" , "memory" )
69+ dst := filepath .Join (t .TempDir (), "dst" , "snapshots" , "snapshot-latest" , "memory" )
70+
71+ require .NoError (t , os .MkdirAll (filepath .Dir (src ), 0755 ))
72+ require .NoError (t , os .WriteFile (src , []byte ("memory" ), 0640 ))
73+
74+ require .NoError (t , CopyRegularFile (src , dst ))
75+
76+ got , err := os .ReadFile (dst )
77+ require .NoError (t , err )
78+ assert .Equal (t , []byte ("memory" ), got )
79+ info , err := os .Stat (dst )
80+ require .NoError (t , err )
81+ assert .Equal (t , os .FileMode (0640 ), info .Mode ().Perm ())
82+ }
83+
4784func TestCopyGuestDirectory_DoesNotSkipTmpSuffixedDirectories (t * testing.T ) {
4885 src := filepath .Join (t .TempDir (), "src" )
4986 dst := filepath .Join (t .TempDir (), "dst" )
0 commit comments