github.com/mistwind/reviewdog@v0.0.0-20230322024206-9cfa11856d58/parser/diff_test.go (about) 1 package parser 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "fmt" 7 "strings" 8 9 "google.golang.org/protobuf/encoding/protojson" 10 ) 11 12 func ExampleDiffParser() { 13 const sample = `diff --git a/gofmt.go b/gofmt.go 14 --- a/gofmt.go 2020-07-26 08:01:09.260800318 +0000 15 +++ b/gofmt.go 2020-07-26 08:01:09.260800318 +0000 16 @@ -1,6 +1,6 @@ 17 package testdata 18 19 -func fmt () { 20 +func fmt() { 21 // test 22 // test line 23 // test line 24 @@ -10,11 +10,11 @@ 25 // test line 26 // test line 27 28 -println( 29 - "hello, gofmt test" ) 30 -//comment 31 + println( 32 + "hello, gofmt test") 33 + //comment 34 } 35 36 +type s struct{ A int } 37 38 -type s struct { A int } 39 func (s s) String() { return "s" } 40 ` 41 const strip = 1 42 p := NewDiffParser(strip) 43 diagnostics, err := p.Parse(strings.NewReader(sample)) 44 if err != nil { 45 panic(err) 46 } 47 for _, d := range diagnostics { 48 rdjson, _ := protojson.MarshalOptions{Indent: " "}.Marshal(d) 49 var out bytes.Buffer 50 json.Indent(&out, rdjson, "", " ") 51 fmt.Println(out.String()) 52 } 53 // Output: 54 // { 55 // "location": { 56 // "path": "gofmt.go", 57 // "range": { 58 // "start": { 59 // "line": 3 60 // }, 61 // "end": { 62 // "line": 3 63 // } 64 // } 65 // }, 66 // "suggestions": [ 67 // { 68 // "range": { 69 // "start": { 70 // "line": 3 71 // }, 72 // "end": { 73 // "line": 3 74 // } 75 // }, 76 // "text": "func fmt() {" 77 // } 78 // ], 79 // "originalOutput": "gofmt.go:3:-func fmt () {\ngofmt.go:3:+func fmt() {" 80 // } 81 // { 82 // "location": { 83 // "path": "gofmt.go", 84 // "range": { 85 // "start": { 86 // "line": 13 87 // }, 88 // "end": { 89 // "line": 15 90 // } 91 // } 92 // }, 93 // "suggestions": [ 94 // { 95 // "range": { 96 // "start": { 97 // "line": 13 98 // }, 99 // "end": { 100 // "line": 15 101 // } 102 // }, 103 // "text": "\tprintln(\n\t\t\"hello, gofmt test\")\n\t//comment" 104 // } 105 // ], 106 // "originalOutput": "gofmt.go:13:-println(\ngofmt.go:14:-\t\t\"hello, gofmt test\" )\ngofmt.go:15:-//comment\ngofmt.go:13:+\tprintln(\ngofmt.go:14:+\t\t\"hello, gofmt test\")\ngofmt.go:15:+\t//comment" 107 // } 108 // { 109 // "location": { 110 // "path": "gofmt.go", 111 // "range": { 112 // "start": { 113 // "line": 18, 114 // "column": 1 115 // }, 116 // "end": { 117 // "line": 18, 118 // "column": 1 119 // } 120 // } 121 // }, 122 // "suggestions": [ 123 // { 124 // "range": { 125 // "start": { 126 // "line": 18, 127 // "column": 1 128 // }, 129 // "end": { 130 // "line": 18, 131 // "column": 1 132 // } 133 // }, 134 // "text": "type s struct{ A int }\n" 135 // } 136 // ], 137 // "originalOutput": "gofmt.go:18:+type s struct{ A int }" 138 // } 139 // { 140 // "location": { 141 // "path": "gofmt.go", 142 // "range": { 143 // "start": { 144 // "line": 19 145 // }, 146 // "end": { 147 // "line": 19 148 // } 149 // } 150 // }, 151 // "suggestions": [ 152 // { 153 // "range": { 154 // "start": { 155 // "line": 19 156 // }, 157 // "end": { 158 // "line": 19 159 // } 160 // } 161 // } 162 // ], 163 // "originalOutput": "gofmt.go:19:-type s struct { A int }" 164 // } 165 }