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  }