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 }