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