github.com/1r0npipe/go-file-find-duplicate@v0.0.0-20210531131222-12a9193c59d9/helper/helper_test.go (about) 1 //Package helper implements the function of removal duplicates of file 2 //regarding the provided path. It will look into all sub-directories 3 //two options are available: review duplicates and delete all of them 4 //no option to delete one by one yet, however you can review first, then delete 5 package helper 6 7 import ( 8 "fmt" 9 "log" 10 "os" 11 "testing" 12 ) 13 14 func ExampleDuplicatesFind() { 15 err := DuplicatesFind(os.DirFS("./"), false) 16 if err != nil { 17 log.Fatal(err) 18 } 19 fmt.Printf("Walked trhough: %d file(-s), found: %d duplicates\n", 20 FileCount, 21 FilesDuplicates) 22 } 23 24 func CreateDuplicates(path, nameDir, nameFile string, dep int) error { 25 err := os.Chdir(path) 26 if err != nil { 27 return fmt.Errorf("can't change root dir for tests: %v", err) 28 } 29 for i := 1; i < dep; i++ { 30 err := os.Mkdir(nameDir, 0777) 31 if err != nil { 32 return fmt.Errorf("can't create directory: %v\n", err) 33 } 34 err = os.Chdir(nameDir) 35 if err != nil { 36 return fmt.Errorf("can't change directory: %v\n", err) 37 } 38 _, err = os.Create(nameFile) 39 if err != nil { 40 return fmt.Errorf("can't create file, because of: %v", err) 41 } 42 } 43 return nil 44 } 45 46 func TestDuplicatesFind(t *testing.T) { 47 var path = "/tmp/" 48 tests := []struct { 49 want int64 50 got int64 51 path string 52 nameDir string 53 fileName string 54 flag bool 55 }{ 56 {3, 1, path, "test", "test.txt", false}, 57 {5, 3, path, "testMore", "testMore.txt", false}, 58 } 59 60 for _, tt := range tests { 61 err := CreateDuplicates(tt.path, tt.nameDir, tt.fileName, int(tt.want)) 62 if err != nil { 63 log.Fatal(err) 64 } 65 fmt.Println(path) 66 err = DuplicatesFind(os.DirFS(tt.path), tt.flag) 67 if err != nil { 68 log.Fatalf("Test failed: %v", err) 69 } 70 if tt.got != tt.want-2 { 71 t.Fatalf("Test has failed with want: %d, but got: %d\n", 72 tt.want, 73 tt.got) 74 } 75 err = os.Chdir(path) 76 if err != nil { 77 t.Fatalf("can't change directory: %v", err) 78 } 79 err = os.RemoveAll(tt.path + string('/') + tt.nameDir) 80 if err != nil { 81 t.Fatalf("can't remove test directory: %v\n", err) 82 } 83 } 84 }