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