github.com/haya14busa/reviewdog@v0.0.0-20180723114510-ffb00ef78fd3/filter_test.go (about)

     1  package reviewdog
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"reflect"
     7  	"sort"
     8  	"strings"
     9  	"testing"
    10  
    11  	"github.com/google/go-cmp/cmp"
    12  	"github.com/haya14busa/reviewdog/diff"
    13  )
    14  
    15  const diffContent = `--- sample.old.txt	2016-10-13 05:09:35.820791185 +0900
    16  +++ sample.new.txt	2016-10-13 05:15:26.839245048 +0900
    17  @@ -1,3 +1,4 @@
    18   unchanged, contextual line
    19  -deleted line
    20  +added line
    21  +added line
    22   unchanged, contextual line
    23  --- nonewline.old.txt	2016-10-13 15:34:14.931778318 +0900
    24  +++ nonewline.new.txt	2016-10-13 15:34:14.868444672 +0900
    25  @@ -1,4 +1,4 @@
    26   " vim: nofixeol noendofline
    27   No newline at end of both the old and new file
    28  -a
    29  -a
    30  \ No newline at end of file
    31  +b
    32  +b
    33  \ No newline at end of file
    34  `
    35  
    36  func TestFilterCheck(t *testing.T) {
    37  	results := []*CheckResult{
    38  		{
    39  			Path: "sample.new.txt",
    40  			Lnum: 1,
    41  		},
    42  		{
    43  			Path: "sample.new.txt",
    44  			Lnum: 2,
    45  		},
    46  		{
    47  			Path: "nonewline.new.txt",
    48  			Lnum: 1,
    49  		},
    50  		{
    51  			Path: "nonewline.new.txt",
    52  			Lnum: 3,
    53  		},
    54  	}
    55  	want := []*FilteredCheck{
    56  		{
    57  			CheckResult: &CheckResult{
    58  				Path: "sample.new.txt",
    59  				Lnum: 1,
    60  			},
    61  			InDiff: false,
    62  		},
    63  		{
    64  			CheckResult: &CheckResult{
    65  				Path: "sample.new.txt",
    66  				Lnum: 2,
    67  			},
    68  			InDiff:   true,
    69  			LnumDiff: 3,
    70  		},
    71  		{
    72  			CheckResult: &CheckResult{
    73  				Path: "nonewline.new.txt",
    74  				Lnum: 1,
    75  			},
    76  			InDiff: false,
    77  		},
    78  		{
    79  			CheckResult: &CheckResult{
    80  				Path: "nonewline.new.txt",
    81  				Lnum: 3,
    82  			},
    83  			InDiff:   true,
    84  			LnumDiff: 5,
    85  		},
    86  	}
    87  	filediffs, _ := diff.ParseMultiFile(strings.NewReader(diffContent))
    88  	got := FilterCheck(results, filediffs, 0, "")
    89  	if diff := cmp.Diff(got, want); diff != "" {
    90  		t.Error(diff)
    91  	}
    92  }
    93  
    94  func TestAddedDiffLines(t *testing.T) {
    95  	filediffs, _ := diff.ParseMultiFile(strings.NewReader(diffContent))
    96  	wd, _ := os.Getwd()
    97  	wantlines := []string{
    98  		"sample.new.txt:2:(difflnum:3) added line",
    99  		"sample.new.txt:3:(difflnum:4) added line",
   100  		"nonewline.new.txt:3:(difflnum:5) b",
   101  		"nonewline.new.txt:4:(difflnum:6) b",
   102  	}
   103  	var gotlines []string
   104  	for path, ltol := range addedDiffLines(filediffs, 0) {
   105  		for lnum, addedline := range ltol {
   106  			l := fmt.Sprintf("%v:%v:(difflnum:%v) %v", path[len(wd)+1:], lnum, addedline.LnumDiff, addedline.Content)
   107  			gotlines = append(gotlines, l)
   108  		}
   109  	}
   110  	sort.Strings(gotlines)
   111  	sort.Strings(wantlines)
   112  	if !reflect.DeepEqual(gotlines, wantlines) {
   113  		t.Errorf("got:\n%v\nwant:\n%v", gotlines, wantlines)
   114  	}
   115  }