@@ -452,13 +452,18 @@ var _ = Describe("Utils", Label("utils"), func() {
452452 Expect (utils .CreateDirStructure (fs , "/my/root" )).NotTo (BeNil ())
453453 })
454454 })
455- Describe ("SyncData" , Label ("SyncData" ), func () {
456- It ("Copies all files from source to target" , func () {
457- sourceDir , err := utils .TempDir (fs , "" , "elementalsource" )
455+ Describe ("Rsync tests" , Label ("rsync" ), func () {
456+ var sourceDir , destDir string
457+ var err error
458+
459+ BeforeEach (func () {
460+ sourceDir , err = utils .TempDir (fs , "" , "elementalsource" )
458461 Expect (err ).ShouldNot (HaveOccurred ())
459- destDir , err : = utils .TempDir (fs , "" , "elementaltarget" )
462+ destDir , err = utils .TempDir (fs , "" , "elementaltarget" )
460463 Expect (err ).ShouldNot (HaveOccurred ())
464+ })
461465
466+ It ("Copies all files from source to target" , func () {
462467 for i := 0 ; i < 5 ; i ++ {
463468 _ , _ = utils .TempFile (fs , sourceDir , "file*" )
464469 }
@@ -479,11 +484,6 @@ var _ = Describe("Utils", Label("utils"), func() {
479484 })
480485
481486 It ("Copies all files from source to target respecting excludes" , func () {
482- sourceDir , err := utils .TempDir (fs , "" , "elementalsource" )
483- Expect (err ).ShouldNot (HaveOccurred ())
484- destDir , err := utils .TempDir (fs , "" , "elementaltarget" )
485- Expect (err ).ShouldNot (HaveOccurred ())
486-
487487 utils .MkdirAll (fs , filepath .Join (sourceDir , "host" ), constants .DirPerm )
488488 utils .MkdirAll (fs , filepath .Join (sourceDir , "run" ), constants .DirPerm )
489489
@@ -522,11 +522,6 @@ var _ = Describe("Utils", Label("utils"), func() {
522522 })
523523
524524 It ("Copies all files from source to target respecting excludes with '/' prefix" , func () {
525- sourceDir , err := utils .TempDir (fs , "" , "elementalsource" )
526- Expect (err ).ShouldNot (HaveOccurred ())
527- destDir , err := utils .TempDir (fs , "" , "elementaltarget" )
528- Expect (err ).ShouldNot (HaveOccurred ())
529-
530525 utils .MkdirAll (fs , filepath .Join (sourceDir , "host" ), constants .DirPerm )
531526 utils .MkdirAll (fs , filepath .Join (sourceDir , "run" ), constants .DirPerm )
532527 utils .MkdirAll (fs , filepath .Join (sourceDir , "var" , "run" ), constants .DirPerm )
@@ -536,40 +531,65 @@ var _ = Describe("Utils", Label("utils"), func() {
536531
537532 filesDest , err := fs .ReadDir (destDir )
538533 Expect (err ).To (BeNil ())
539-
540534 destNames := getNamesFromListFiles (filesDest )
541535
542536 filesSource , err := fs .ReadDir (sourceDir )
543537 Expect (err ).To (BeNil ())
544-
545- SourceNames := getNamesFromListFiles (filesSource )
538+ sourceNames := getNamesFromListFiles (filesSource )
546539
547540 // Shouldn't be the same
548- Expect (destNames ).ToNot (Equal (SourceNames ))
541+ Expect (destNames ).ToNot (Equal (sourceNames ))
549542
550543 Expect (utils .Exists (fs , filepath .Join (destDir , "var" , "run" ))).To (BeTrue ())
551544 Expect (utils .Exists (fs , filepath .Join (destDir , "tmp" , "host" ))).To (BeTrue ())
552545 Expect (utils .Exists (fs , filepath .Join (destDir , "host" ))).To (BeFalse ())
553546 Expect (utils .Exists (fs , filepath .Join (destDir , "run" ))).To (BeFalse ())
554547 })
555548
549+ It ("Copies all files from source to target respecting excludes with wildcards" , func () {
550+ utils .MkdirAll (fs , filepath .Join (sourceDir , "run" ), constants .DirPerm )
551+ utils .MkdirAll (fs , filepath .Join (sourceDir , "var" , "run" ), constants .DirPerm )
552+ Expect (fs .WriteFile (filepath .Join (sourceDir , "run" , "testfile" ), []byte {}, constants .DirPerm )).To (Succeed ())
553+
554+ Expect (utils .SyncData (logger , realRunner , fs , sourceDir , destDir , "/run/*" )).To (BeNil ())
555+
556+ Expect (utils .Exists (fs , filepath .Join (destDir , "var" , "run" ))).To (BeTrue ())
557+ Expect (utils .Exists (fs , filepath .Join (destDir , "run" ))).To (BeTrue ())
558+ Expect (utils .Exists (fs , filepath .Join (destDir , "run" , "testfile" ))).To (BeFalse ())
559+ })
560+
561+ It ("Mirrors all files from source to destination deleting pre-existing files in destination if needed" , func () {
562+ utils .MkdirAll (fs , filepath .Join (sourceDir , "run" ), constants .DirPerm )
563+ utils .MkdirAll (fs , filepath .Join (sourceDir , "var" , "run" ), constants .DirPerm )
564+ Expect (fs .WriteFile (filepath .Join (sourceDir , "run" , "testfile" ), []byte {}, constants .DirPerm )).To (Succeed ())
565+ Expect (fs .WriteFile (filepath .Join (destDir , "testfile" ), []byte {}, constants .DirPerm )).To (Succeed ())
566+
567+ Expect (utils .MirrorData (logger , realRunner , fs , sourceDir , destDir )).To (BeNil ())
568+
569+ filesDest , err := fs .ReadDir (destDir )
570+ Expect (err ).To (BeNil ())
571+ destNames := getNamesFromListFiles (filesDest )
572+
573+ filesSource , err := fs .ReadDir (sourceDir )
574+ Expect (err ).To (BeNil ())
575+ sourceNames := getNamesFromListFiles (filesSource )
576+
577+ // Should be the same
578+ Expect (destNames ).To (Equal (sourceNames ))
579+
580+ // pre-exising file in destination deleted if this is not part of source
581+ Expect (utils .Exists (fs , filepath .Join (destDir , "testfile" ))).To (BeFalse ())
582+ })
583+
556584 It ("should not fail if dirs are empty" , func () {
557- sourceDir , err := utils .TempDir (fs , "" , "elementalsource" )
558- Expect (err ).ShouldNot (HaveOccurred ())
559- destDir , err := utils .TempDir (fs , "" , "elementaltarget" )
560- Expect (err ).ShouldNot (HaveOccurred ())
561585 Expect (utils .SyncData (logger , realRunner , fs , sourceDir , destDir )).To (BeNil ())
562586 })
563587 It ("should fail if destination does not exist" , func () {
564- sourceDir , err := os .MkdirTemp ("" , "elemental" )
565- Expect (err ).To (BeNil ())
566- defer os .RemoveAll (sourceDir )
588+ fs .RemoveAll (destDir )
567589 Expect (utils .SyncData (logger , realRunner , nil , sourceDir , "/welp" )).NotTo (BeNil ())
568590 })
569591 It ("should fail if source does not exist" , func () {
570- destDir , err := os .MkdirTemp ("" , "elemental" )
571- Expect (err ).To (BeNil ())
572- defer os .RemoveAll (destDir )
592+ fs .RemoveAll (sourceDir )
573593 Expect (utils .SyncData (logger , realRunner , nil , "/welp" , destDir )).NotTo (BeNil ())
574594 })
575595 })
@@ -948,6 +968,30 @@ var _ = Describe("Utils", Label("utils"), func() {
948968 })).To (BeNil ())
949969 Expect (err ).ToNot (HaveOccurred ())
950970 })
971+ It ("ignores any '-e' option" , func () {
972+ args := append (constants .GetDefaultSquashfsCompressionOptions (), "-e /some/path" )
973+ err := utils .CreateSquashFS (runner , logger , "source" , "dest" , args )
974+ cmd := []string {"mksquashfs" , "source" , "dest" }
975+ cmd = append (cmd , constants .GetDefaultSquashfsCompressionOptions ()... )
976+ Expect (runner .IncludesCmds ([][]string {
977+ cmd ,
978+ })).To (BeNil ())
979+ Expect (err ).ToNot (HaveOccurred ())
980+ })
981+ It ("excludes given paths" , func () {
982+
983+ err := utils .CreateSquashFS (
984+ runner , logger , "source" , "dest" , constants .GetDefaultSquashfsCompressionOptions (),
985+ "some/path" , "another/path" ,
986+ )
987+ cmd := []string {"mksquashfs" , "source" , "dest" }
988+ cmd = append (cmd , constants .GetDefaultSquashfsCompressionOptions ()... )
989+ cmd = append (cmd , "-wildcards" , "-e" , "some/path" , "another/path" )
990+ Expect (runner .IncludesCmds ([][]string {
991+ cmd ,
992+ })).To (Succeed ())
993+ Expect (err ).ToNot (HaveOccurred ())
994+ })
951995 It ("returns an error if it fails" , func () {
952996 runner .ReturnError = errors .New ("error" )
953997 err := utils .CreateSquashFS (runner , logger , "source" , "dest" , []string {})
0 commit comments