github.com/mattbailey/reviewdog@v0.10.0/reviewdog_test.go (about) 1 package reviewdog 2 3 import ( 4 "context" 5 "os" 6 "strings" 7 "testing" 8 9 "github.com/reviewdog/errorformat" 10 ) 11 12 var _ CommentService = &testWriter{} 13 14 type testWriter struct { 15 FakePost func(c *Comment) error 16 } 17 18 func (s *testWriter) Post(_ context.Context, c *Comment) error { 19 return s.FakePost(c) 20 } 21 22 func ExampleReviewdog() { 23 difftext := `diff --git a/golint.old.go b/golint.new.go 24 index 34cacb9..a727dd3 100644 25 --- a/golint.old.go 26 +++ b/golint.new.go 27 @@ -2,6 +2,12 @@ package test 28 29 var V int 30 31 +var NewError1 int 32 + 33 // invalid func comment 34 func F() { 35 } 36 + 37 +// invalid func comment2 38 +func F2() { 39 +} 40 ` 41 lintresult := `golint.new.go:3:5: exported var V should have comment or be unexported 42 golint.new.go:5:5: exported var NewError1 should have comment or be unexported 43 golint.new.go:7:1: comment on exported function F should be of the form "F ..." 44 golint.new.go:11:1: comment on exported function F2 should be of the form "F2 ..." 45 ` 46 efm, _ := errorformat.NewErrorformat([]string{`%f:%l:%c: %m`}) 47 p := NewErrorformatParser(efm) 48 c := NewRawCommentWriter(os.Stdout) 49 d := NewDiffString(difftext, 1) 50 app := NewReviewdog("tool name", p, c, d, FilterModeAdded, false) 51 app.Run(context.Background(), strings.NewReader(lintresult)) 52 // Unordered output: 53 // golint.new.go:5:5: exported var NewError1 should have comment or be unexported 54 // golint.new.go:11:1: comment on exported function F2 should be of the form "F2 ..." 55 } 56 57 func TestReviewdog_Run_clean_path(t *testing.T) { 58 difftext := `diff --git a/golint.old.go b/golint.new.go 59 index 34cacb9..a727dd3 100644 60 --- a/golint.old.go 61 +++ b/golint.new.go 62 @@ -2,6 +2,12 @@ package test 63 64 var V int 65 66 +var NewError1 int 67 + 68 // invalid func comment 69 func F() { 70 } 71 + 72 +// invalid func comment2 73 +func F2() { 74 +} 75 ` 76 lintresult := `./golint.new.go:3:5: exported var V should have comment or be unexported 77 ./golint.new.go:5:5: exported var NewError1 should have comment or be unexported 78 ./golint.new.go:7:1: comment on exported function F should be of the form "F ..." 79 ./golint.new.go:11:1: comment on exported function F2 should be of the form "F2 ..." 80 ` 81 82 want := "golint.new.go" 83 84 c := &testWriter{ 85 FakePost: func(c *Comment) error { 86 if got := c.Path; got != want { 87 t.Errorf("path: got %v, want %v", got, want) 88 } 89 return nil 90 }, 91 } 92 93 efm, _ := errorformat.NewErrorformat([]string{`%f:%l:%c: %m`}) 94 p := NewErrorformatParser(efm) 95 d := NewDiffString(difftext, 1) 96 app := NewReviewdog("tool name", p, c, d, FilterModeAdded, false) 97 app.Run(context.Background(), strings.NewReader(lintresult)) 98 } 99 100 func TestReviewdog_Run_returns_nil_if_fail_on_error_not_passed_and_some_errors_found(t *testing.T) { 101 difftext := `diff --git a/golint.old.go b/golint.new.go 102 index 34cacb9..a727dd3 100644 103 --- a/golint.old.go 104 +++ b/golint.new.go 105 @@ -2,6 +2,12 @@ package test 106 107 var V int 108 109 +var NewError1 int 110 + 111 // invalid func comment 112 func F() { 113 } 114 + 115 +// invalid func comment2 116 +func F2() { 117 +} 118 ` 119 lintresult := `golint.new.go:3:5: exported var V should have comment or be unexported 120 golint.new.go:5:5: exported var NewError1 should have comment or be unexported 121 golint.new.go:7:1: comment on exported function F should be of the form "F ..." 122 golint.new.go:11:1: comment on exported function F2 should be of the form "F2 ..." 123 ` 124 125 c := NewRawCommentWriter(os.Stdout) 126 efm, _ := errorformat.NewErrorformat([]string{`%f:%l:%c: %m`}) 127 p := NewErrorformatParser(efm) 128 d := NewDiffString(difftext, 1) 129 app := NewReviewdog("tool name", p, c, d, FilterModeAdded, false) 130 err := app.Run(context.Background(), strings.NewReader(lintresult)) 131 132 if err != nil { 133 t.Errorf("No errors expected, but got %v", err) 134 } 135 } 136 137 func TestReviewdog_Run_returns_error_if_fail_on_error_passed_and_some_errors_found(t *testing.T) { 138 difftext := `diff --git a/golint.old.go b/golint.new.go 139 index 34cacb9..a727dd3 100644 140 --- a/golint.old.go 141 +++ b/golint.new.go 142 @@ -2,6 +2,12 @@ package test 143 144 var V int 145 146 +var NewError1 int 147 + 148 // invalid func comment 149 func F() { 150 } 151 + 152 +// invalid func comment2 153 +func F2() { 154 +} 155 ` 156 lintresult := `golint.new.go:3:5: exported var V should have comment or be unexported 157 golint.new.go:5:5: exported var NewError1 should have comment or be unexported 158 golint.new.go:7:1: comment on exported function F should be of the form "F ..." 159 golint.new.go:11:1: comment on exported function F2 should be of the form "F2 ..." 160 ` 161 c := NewRawCommentWriter(os.Stdout) 162 efm, _ := errorformat.NewErrorformat([]string{`%f:%l:%c: %m`}) 163 p := NewErrorformatParser(efm) 164 d := NewDiffString(difftext, 1) 165 app := NewReviewdog("tool name", p, c, d, FilterModeAdded, true) 166 err := app.Run(context.Background(), strings.NewReader(lintresult)) 167 168 if err != nil && err.Error() != "input data has violations" { 169 t.Errorf("'input data has violations' expected, but got %v", err) 170 } 171 }