code.gitea.io/gitea@v1.19.3/modules/git/foreachref/format_test.go (about)

     1  // Copyright 2022 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package foreachref_test
     5  
     6  import (
     7  	"testing"
     8  
     9  	"code.gitea.io/gitea/modules/git/foreachref"
    10  
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func TestFormat_Flag(t *testing.T) {
    15  	tests := []struct {
    16  		name string
    17  
    18  		givenFormat foreachref.Format
    19  
    20  		wantFlag string
    21  	}{
    22  		{
    23  			name: "references are delimited by dual null chars",
    24  
    25  			// no reference fields requested
    26  			givenFormat: foreachref.NewFormat(),
    27  
    28  			// only a reference delimiter field in --format
    29  			wantFlag: "%00%00",
    30  		},
    31  
    32  		{
    33  			name: "a field is a space-separated key-value pair",
    34  
    35  			givenFormat: foreachref.NewFormat("refname:short"),
    36  
    37  			// only a reference delimiter field
    38  			wantFlag: "refname:short %(refname:short)%00%00",
    39  		},
    40  
    41  		{
    42  			name: "fields are separated by a null char field-delimiter",
    43  
    44  			givenFormat: foreachref.NewFormat("refname:short", "author"),
    45  
    46  			wantFlag: "refname:short %(refname:short)%00author %(author)%00%00",
    47  		},
    48  
    49  		{
    50  			name: "multiple fields",
    51  
    52  			givenFormat: foreachref.NewFormat("refname:short", "objecttype", "objectname"),
    53  
    54  			wantFlag: "refname:short %(refname:short)%00objecttype %(objecttype)%00objectname %(objectname)%00%00",
    55  		},
    56  	}
    57  
    58  	for _, test := range tests {
    59  		tc := test // don't close over loop variable
    60  		t.Run(tc.name, func(t *testing.T) {
    61  			gotFlag := tc.givenFormat.Flag()
    62  
    63  			require.Equal(t, tc.wantFlag, gotFlag, "unexpected for-each-ref --format string. wanted: '%s', got: '%s'", tc.wantFlag, gotFlag)
    64  		})
    65  	}
    66  }