github.com/yoheimuta/protolint@v0.49.8-0.20240515023657-4ecaebb7575d/internal/addon/rules/util_test.go (about)

     1  package rules_test
     2  
     3  import (
     4  	"github.com/yoheimuta/protolint/internal/linter/file"
     5  	"github.com/yoheimuta/protolint/internal/setting_test"
     6  	"github.com/yoheimuta/protolint/internal/util_test"
     7  	"github.com/yoheimuta/protolint/linter/rule"
     8  	"github.com/yoheimuta/protolint/linter/strs"
     9  
    10  	"reflect"
    11  	"testing"
    12  )
    13  
    14  func testApplyFix(
    15  	t *testing.T,
    16  	r rule.Rule,
    17  	inputFilename string,
    18  	wantFilename string,
    19  ) {
    20  	dataDir := strs.ToLowerCamelCase(r.ID())
    21  
    22  	input, err := util_test.NewTestData(setting_test.TestDataPath("rules", dataDir, inputFilename))
    23  	if err != nil {
    24  		t.Errorf("got err %v", err)
    25  		return
    26  	}
    27  
    28  	want, err := util_test.NewTestData(setting_test.TestDataPath("rules", dataDir, wantFilename))
    29  	if err != nil {
    30  		t.Errorf("got err %v", err)
    31  		return
    32  	}
    33  
    34  	proto, err := file.NewProtoFile(input.FilePath, input.FilePath).Parse(false)
    35  	if err != nil {
    36  		t.Errorf(err.Error())
    37  		return
    38  	}
    39  
    40  	_, err = r.Apply(proto)
    41  	if err != nil {
    42  		t.Errorf("got err %v, but want nil", err)
    43  		return
    44  	}
    45  
    46  	got, err := input.Data()
    47  	if !reflect.DeepEqual(got, want.OriginData) {
    48  		t.Errorf(
    49  			"got %s(%v), but want %s(%v)",
    50  			string(got), got,
    51  			string(want.OriginData), want.OriginData,
    52  		)
    53  	}
    54  
    55  	err = input.Restore()
    56  	if err != nil {
    57  		t.Errorf("got err %v", err)
    58  	}
    59  }