@@ -388,43 +388,63 @@ func TestWaitForPathNotExistWithTimeout(t *testing.T) {
388388 }
389389}
390390
391- func TestGetRootPath (t * testing.T ) {
391+ func TestRemoveEmptyDirs (t * testing.T ) {
392+ parentDir , _ := os .Getwd ()
393+ emptyDirOneLevel , _ := getWorkDirPath ("emptyDir1" )
394+ emptyDirTwoLevels , _ := getWorkDirPath ("emptyDir2/emptyDir2" )
395+ emptyDirThreeLevels , _ := getWorkDirPath ("emptyDir3/emptyDir2/emptyDir3" )
396+
392397 tests := []struct {
393- desc string
394- dir string
395- expected string
398+ desc string
399+ parentDir string
400+ dir string
401+ expected error
396402 }{
397403 {
398- desc : "empty path" ,
399- dir : "" ,
400- expected : "" ,
404+ desc : "empty path" ,
405+ parentDir : parentDir ,
406+ expected : nil ,
401407 },
402408 {
403- desc : "root path" ,
404- dir : "/" ,
405- expected : "" ,
409+ desc : "empty dir with one level" ,
410+ parentDir : parentDir ,
411+ dir : emptyDirOneLevel ,
412+ expected : nil ,
406413 },
407414 {
408- desc : "subdir path" ,
409- dir : "/subdir" ,
410- expected : "" ,
415+ desc : "dir is not a subdirectory of parentDir" ,
416+ parentDir : "/dir1" ,
417+ dir : "/dir2" ,
418+ expected : fmt .Errorf ("dir /dir2 is not a subdirectory of parentDir /dir1" ),
411419 },
412420 {
413- desc : "subdir path without leading slash" ,
414- dir : "subdir" ,
415- expected : "subdir" ,
421+ desc : "empty dir with two levels" ,
422+ parentDir : parentDir ,
423+ dir : emptyDirTwoLevels ,
424+ expected : nil ,
416425 },
417426 {
418- desc : "multiple subdir path without leading slash" ,
419- dir : "subdir/subdir2" ,
420- expected : "subdir" ,
427+ desc : "empty dir with three levels" ,
428+ parentDir : parentDir ,
429+ dir : emptyDirThreeLevels ,
430+ expected : nil ,
421431 },
422432 }
423433
424434 for _ , test := range tests {
425- result := getRootDir (test .dir )
426- if result != test .expected {
427- t .Errorf ("Unexpected result: %s, expected: %s" , result , test .expected )
435+ if strings .Contains (test .dir , "emptyDir" ) {
436+ _ = makeDir (test .dir )
437+ defer os .RemoveAll (test .dir )
438+ }
439+ err := removeEmptyDirs (test .parentDir , test .dir )
440+ if ! reflect .DeepEqual (err , test .expected ) {
441+ t .Errorf ("test[%s]: unexpected output: %v, expected result: %v" , test .desc , err , test .expected )
442+ }
443+ if strings .Contains (test .dir , "emptyDir" ) {
444+ // directory should be removed
445+ if _ , err := os .Stat (emptyDirOneLevel ); ! os .IsNotExist (err ) {
446+ t .Errorf ("test[%s]: directory %s should be removed" , test .desc , emptyDirOneLevel )
447+ }
428448 }
429449 }
430450}
0 commit comments