github.com/wawandco/ox@v0.13.6-0.20230809142027-913b3d837f2a/internal/info/info_test.go (about)

     1  package info
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  )
     7  
     8  func TestBuildName(t *testing.T) {
     9  
    10  	t.Run("Success", func(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 = os.WriteFile("go.mod", []byte(file), 0444)
    19  		if err != nil {
    20  			t.Fatal(err)
    21  		}
    22  
    23  		name, err := BuildName()
    24  		if err != nil {
    25  			t.Fail()
    26  		}
    27  
    28  		if name != "something" {
    29  			t.Fail()
    30  		}
    31  	})
    32  
    33  	t.Run("Failed", func(t *testing.T) {
    34  		err := os.Chdir(t.TempDir())
    35  		if err != nil {
    36  			t.Fatal(err)
    37  		}
    38  
    39  		err = os.Remove("go.mod")
    40  		if err != nil && !os.IsNotExist(err) {
    41  			t.Fatal(err)
    42  		}
    43  
    44  		name, err := BuildName()
    45  		if err == nil {
    46  			t.Fail()
    47  		}
    48  
    49  		if name != "" {
    50  			t.Fail()
    51  		}
    52  	})
    53  
    54  	t.Run("ModuleCases", func(t *testing.T) {
    55  		tcases := []struct {
    56  			content      string
    57  			nameExpected string
    58  			errExpected  error
    59  		}{
    60  			{
    61  				content:      "random module content",
    62  				nameExpected: "",
    63  				errExpected:  ErrModuleNameNotFound,
    64  			},
    65  			{
    66  				content:      "module moduleFixer",
    67  				nameExpected: "moduleFixer",
    68  			},
    69  
    70  			{
    71  				content:      "module my/large/module/name",
    72  				nameExpected: "name",
    73  			},
    74  
    75  			{
    76  				content:      "module github.com/some/cool/package",
    77  				nameExpected: "package",
    78  			},
    79  			// TO DO:
    80  			{
    81  				content: `//One with comment
    82  						  module github.com/some/cool/comment`,
    83  				nameExpected: "comment",
    84  			},
    85  			{
    86  				content:      "",
    87  				nameExpected: "",
    88  				errExpected:  ErrModuleNameNotFound,
    89  			},
    90  
    91  			{
    92  				content:      "// module name tricky in comment",
    93  				nameExpected: "",
    94  				errExpected:  ErrModuleNameNotFound,
    95  			},
    96  		}
    97  
    98  		for _, tcase := range tcases {
    99  			t.Run(tcase.content, func(t *testing.T) {
   100  				err := os.Chdir(t.TempDir())
   101  				if err != nil {
   102  					t.Fatal("could not move to tmp folder")
   103  				}
   104  
   105  				content := []byte(tcase.content)
   106  				err = os.WriteFile("go.mod", content, 0600)
   107  				if err != nil {
   108  					t.Fatalf("could not create go.mod file: %v", err)
   109  				}
   110  
   111  				name, err := BuildName()
   112  				if err != tcase.errExpected {
   113  					t.Fatalf("error should be %v got %v", tcase.errExpected, err)
   114  				}
   115  
   116  				if name != tcase.nameExpected {
   117  					t.Fatalf("module name should be %v got %v", tcase.nameExpected, name)
   118  				}
   119  			})
   120  
   121  		}
   122  	})
   123  
   124  }