github.com/2lambda123/git-lfs@v2.5.2+incompatible/git/refs_test.go (about)

     1  package git
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func TestRefUpdateDefault(t *testing.T) {
    10  	pushModes := []string{"simple", ""}
    11  	for _, pushMode := range pushModes {
    12  		env := newEnv(map[string][]string{
    13  			"push.default":       []string{pushMode},
    14  			"branch.left.remote": []string{"ignore"},
    15  			"branch.left.merge":  []string{"me"},
    16  		})
    17  
    18  		u := NewRefUpdate(env, "origin", ParseRef("refs/heads/left", ""), nil)
    19  		assert.Equal(t, "left", u.Right().Name, "pushmode=%q", pushMode)
    20  		assert.Equal(t, RefTypeLocalBranch, u.Right().Type, "pushmode=%q", pushMode)
    21  	}
    22  }
    23  
    24  func TestRefUpdateTrackedDefault(t *testing.T) {
    25  	pushModes := []string{"simple", "upstream", "tracking", ""}
    26  	for _, pushMode := range pushModes {
    27  		env := newEnv(map[string][]string{
    28  			"push.default":       []string{pushMode},
    29  			"branch.left.remote": []string{"origin"},
    30  			"branch.left.merge":  []string{"refs/heads/tracked"},
    31  		})
    32  
    33  		u := NewRefUpdate(env, "origin", ParseRef("refs/heads/left", ""), nil)
    34  		assert.Equal(t, "tracked", u.Right().Name, "pushmode=%s", pushMode)
    35  		assert.Equal(t, RefTypeLocalBranch, u.Right().Type, "pushmode=%q", pushMode)
    36  	}
    37  }
    38  
    39  func TestRefUpdateCurrentDefault(t *testing.T) {
    40  	env := newEnv(map[string][]string{
    41  		"push.default":       []string{"current"},
    42  		"branch.left.remote": []string{"origin"},
    43  		"branch.left.merge":  []string{"tracked"},
    44  	})
    45  
    46  	u := NewRefUpdate(env, "origin", ParseRef("refs/heads/left", ""), nil)
    47  	assert.Equal(t, "left", u.Right().Name)
    48  	assert.Equal(t, RefTypeLocalBranch, u.Right().Type)
    49  }
    50  
    51  func TestRefUpdateExplicitLeftAndRight(t *testing.T) {
    52  	u := NewRefUpdate(nil, "", ParseRef("refs/heads/left", "abc123"), ParseRef("refs/heads/right", "def456"))
    53  	assert.Equal(t, "left", u.Left().Name)
    54  	assert.Equal(t, "abc123", u.Left().Sha)
    55  	assert.Equal(t, "abc123", u.LeftCommitish())
    56  	assert.Equal(t, "right", u.Right().Name)
    57  	assert.Equal(t, "def456", u.Right().Sha)
    58  	assert.Equal(t, "def456", u.RightCommitish())
    59  
    60  	u = NewRefUpdate(nil, "", ParseRef("refs/heads/left", ""), ParseRef("refs/heads/right", ""))
    61  	assert.Equal(t, "left", u.Left().Name)
    62  	assert.Equal(t, "", u.Left().Sha)
    63  	assert.Equal(t, "left", u.LeftCommitish())
    64  	assert.Equal(t, "right", u.Right().Name)
    65  	assert.Equal(t, "", u.Right().Sha)
    66  	assert.Equal(t, "right", u.RightCommitish())
    67  }
    68  
    69  func newEnv(m map[string][]string) *mapEnv {
    70  	return &mapEnv{data: m}
    71  }
    72  
    73  type mapEnv struct {
    74  	data map[string][]string
    75  }
    76  
    77  func (m *mapEnv) Get(key string) (string, bool) {
    78  	vals, ok := m.data[key]
    79  	if ok && len(vals) > 0 {
    80  		return vals[0], true
    81  	}
    82  	return "", false
    83  }