github.com/Mistwind/reviewdog@v0.0.0-20230317041057-48e69b6d9e86/diff_test.go (about)

     1  package reviewdog
     2  
     3  import (
     4  	"context"
     5  	"os"
     6  	"os/exec"
     7  	"strings"
     8  	"sync"
     9  	"testing"
    10  )
    11  
    12  func TestDiffString(t *testing.T) {
    13  	difftext := `diff --git a/golint.old.go b/golint.new.go
    14  index 34cacb9..a727dd3 100644
    15  --- a/golint.old.go
    16  +++ b/golint.new.go
    17  @@ -2,6 +2,12 @@ package test
    18   
    19   var V int
    20   
    21  +var NewError1 int
    22  +
    23   // invalid func comment
    24   func F() {
    25   }
    26  +
    27  +// invalid func comment2
    28  +func F2() {
    29  +}
    30  `
    31  	d := NewDiffString(difftext, 1)
    32  	b, err := d.Diff(context.Background())
    33  	if err != nil {
    34  		t.Error(err)
    35  	}
    36  	got := string(b)
    37  	if got != difftext {
    38  		t.Errorf("got:\n%v\nwant:\n%v", got, difftext)
    39  	}
    40  }
    41  
    42  func TestDiffCmd(t *testing.T) {
    43  	wantb, err := os.ReadFile("./diff/testdata/golint.diff")
    44  	if err != nil {
    45  		t.Fatal(err)
    46  	}
    47  	want := strings.SplitN(string(wantb), "\n", 5)[4] // strip extended header
    48  	cmd := exec.Command("git", "diff", "--no-index", "./diff/testdata/golint.old.go", "./diff/testdata/golint.new.go")
    49  	d := NewDiffCmd(cmd, 1)
    50  	// ensure it supports multiple use
    51  	var wg sync.WaitGroup
    52  	for i := 0; i < 3; i++ {
    53  		wg.Add(1)
    54  		go func() {
    55  			defer wg.Done()
    56  			b, err := d.Diff(context.Background())
    57  			if err != nil {
    58  				t.Error(string(b), err)
    59  			}
    60  			got := strings.SplitN(string(b), "\n", 5)[4]
    61  			if got != want {
    62  				t.Errorf("got:\n%v\nwant:\n%v", got, want)
    63  			}
    64  		}()
    65  	}
    66  	wg.Wait()
    67  }