github.com/wawandco/oxpecker@v1.5.7-0.20210910201653-5958d4afdd89/internal/info/rootfolder_test.go (about)

     1  package info
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  )
     9  
    10  func Test_RootFolder(t *testing.T) {
    11  	td := t.TempDir()
    12  	err := os.Chdir(td)
    13  	if err != nil {
    14  		t.Fatal(err)
    15  	}
    16  
    17  	file := `module wawandco/something`
    18  	err = ioutil.WriteFile("go.mod", []byte(file), 0444)
    19  	if err != nil {
    20  		t.Fatal(err)
    21  	}
    22  
    23  	t.Run("CurrentDir", func(t *testing.T) {
    24  		folder := RootFolder()
    25  		wd, err := os.Getwd()
    26  		if err != nil {
    27  			t.Fatal(err)
    28  		}
    29  
    30  		if folder != wd {
    31  			t.Fatalf("Should return `%v` and got `%v`", wd, folder)
    32  		}
    33  	})
    34  
    35  	t.Run("InnerFolder", func(t *testing.T) {
    36  		wd, err := os.Getwd()
    37  		if err != nil {
    38  			t.Fatal(err)
    39  		}
    40  
    41  		inner := filepath.Join(wd, "inner", "folder")
    42  
    43  		err = os.MkdirAll(inner, 0777)
    44  		if err != nil {
    45  			t.Fatal(err)
    46  		}
    47  
    48  		err = os.Chdir(inner)
    49  		if err != nil {
    50  			t.Fatal(err)
    51  		}
    52  
    53  		folder := RootFolder()
    54  		if folder != wd {
    55  			t.Fatalf("Should return `%v` and got `%v`", td, folder)
    56  		}
    57  	})
    58  
    59  	t.Run("Not Found", func(t *testing.T) {
    60  		td := t.TempDir()
    61  		err := os.Chdir(td)
    62  		if err != nil {
    63  			t.Fatal(err)
    64  		}
    65  
    66  		folder := RootFolder()
    67  		if folder != "" {
    68  			t.Fatalf("Should return `%v` and got `%v`", td, folder)
    69  		}
    70  	})
    71  }