2016-05-13 16:38:06 +00:00
|
|
|
package config
|
2014-02-01 21:09:52 +00:00
|
|
|
|
|
|
|
import (
|
2018-10-04 21:53:06 +00:00
|
|
|
"os"
|
2014-02-01 21:09:52 +00:00
|
|
|
"testing"
|
2018-10-12 18:53:07 +00:00
|
|
|
"time"
|
2015-05-13 19:43:41 +00:00
|
|
|
|
2017-11-03 16:36:12 +00:00
|
|
|
"github.com/git-lfs/git-lfs/git"
|
2016-05-25 16:43:10 +00:00
|
|
|
"github.com/stretchr/testify/assert"
|
2014-02-01 21:09:52 +00:00
|
|
|
)
|
|
|
|
|
2017-11-03 16:36:12 +00:00
|
|
|
func TestRemoteDefault(t *testing.T) {
|
|
|
|
cfg := NewFrom(Values{
|
|
|
|
Git: map[string][]string{
|
|
|
|
"branch.unused.remote": []string{"a"},
|
|
|
|
"branch.unused.pushRemote": []string{"b"},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
assert.Equal(t, "origin", cfg.Remote())
|
|
|
|
assert.Equal(t, "origin", cfg.PushRemote())
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestRemoteBranchConfig(t *testing.T) {
|
|
|
|
cfg := NewFrom(Values{
|
|
|
|
Git: map[string][]string{
|
|
|
|
"branch.master.remote": []string{"a"},
|
|
|
|
"branch.other.pushRemote": []string{"b"},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
cfg.ref = &git.Ref{Name: "master"}
|
|
|
|
|
|
|
|
assert.Equal(t, "a", cfg.Remote())
|
|
|
|
assert.Equal(t, "a", cfg.PushRemote())
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestRemotePushDefault(t *testing.T) {
|
|
|
|
cfg := NewFrom(Values{
|
|
|
|
Git: map[string][]string{
|
|
|
|
"branch.master.remote": []string{"a"},
|
|
|
|
"remote.pushDefault": []string{"b"},
|
|
|
|
"branch.other.pushRemote": []string{"c"},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
cfg.ref = &git.Ref{Name: "master"}
|
|
|
|
|
|
|
|
assert.Equal(t, "a", cfg.Remote())
|
|
|
|
assert.Equal(t, "b", cfg.PushRemote())
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestRemoteBranchPushDefault(t *testing.T) {
|
|
|
|
cfg := NewFrom(Values{
|
|
|
|
Git: map[string][]string{
|
|
|
|
"branch.master.remote": []string{"a"},
|
|
|
|
"remote.pushDefault": []string{"b"},
|
|
|
|
"branch.master.pushRemote": []string{"c"},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
cfg.ref = &git.Ref{Name: "master"}
|
|
|
|
|
|
|
|
assert.Equal(t, "a", cfg.Remote())
|
|
|
|
assert.Equal(t, "c", cfg.PushRemote())
|
|
|
|
}
|
|
|
|
|
2016-06-09 10:45:24 +00:00
|
|
|
func TestBasicTransfersOnlySetValue(t *testing.T) {
|
2016-08-05 21:13:31 +00:00
|
|
|
cfg := NewFrom(Values{
|
2017-04-12 21:29:11 +00:00
|
|
|
Git: map[string][]string{
|
|
|
|
"lfs.basictransfersonly": []string{"true"},
|
2016-06-09 10:45:24 +00:00
|
|
|
},
|
2016-08-05 21:13:31 +00:00
|
|
|
})
|
2016-06-09 10:45:24 +00:00
|
|
|
|
2016-08-05 21:13:31 +00:00
|
|
|
b := cfg.BasicTransfersOnly()
|
2016-06-09 10:45:24 +00:00
|
|
|
assert.Equal(t, true, b)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestBasicTransfersOnlyDefault(t *testing.T) {
|
2016-08-05 21:13:31 +00:00
|
|
|
cfg := NewFrom(Values{})
|
2016-06-09 10:45:24 +00:00
|
|
|
|
2016-08-05 21:13:31 +00:00
|
|
|
b := cfg.BasicTransfersOnly()
|
2016-06-09 10:45:24 +00:00
|
|
|
assert.Equal(t, false, b)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestBasicTransfersOnlyInvalidValue(t *testing.T) {
|
2016-08-05 21:13:31 +00:00
|
|
|
cfg := NewFrom(Values{
|
2017-04-12 21:29:11 +00:00
|
|
|
Git: map[string][]string{
|
|
|
|
"lfs.basictransfersonly": []string{"wat"},
|
2016-06-09 10:45:24 +00:00
|
|
|
},
|
2016-08-05 21:13:31 +00:00
|
|
|
})
|
2016-06-09 10:45:24 +00:00
|
|
|
|
2016-08-05 21:13:31 +00:00
|
|
|
b := cfg.BasicTransfersOnly()
|
2016-06-09 10:45:24 +00:00
|
|
|
assert.Equal(t, false, b)
|
|
|
|
}
|
|
|
|
|
2016-07-25 18:50:58 +00:00
|
|
|
func TestTusTransfersAllowedSetValue(t *testing.T) {
|
2016-08-05 21:13:31 +00:00
|
|
|
cfg := NewFrom(Values{
|
2017-04-12 21:29:11 +00:00
|
|
|
Git: map[string][]string{
|
|
|
|
"lfs.tustransfers": []string{"true"},
|
2016-07-25 18:50:58 +00:00
|
|
|
},
|
2016-08-05 21:13:31 +00:00
|
|
|
})
|
2016-07-25 18:50:58 +00:00
|
|
|
|
2016-08-05 21:13:31 +00:00
|
|
|
b := cfg.TusTransfersAllowed()
|
2016-07-25 18:50:58 +00:00
|
|
|
assert.Equal(t, true, b)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestTusTransfersAllowedDefault(t *testing.T) {
|
2016-08-05 21:13:31 +00:00
|
|
|
cfg := NewFrom(Values{})
|
2016-07-25 18:50:58 +00:00
|
|
|
|
2016-08-05 21:13:31 +00:00
|
|
|
b := cfg.TusTransfersAllowed()
|
2016-07-25 18:50:58 +00:00
|
|
|
assert.Equal(t, false, b)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestTusTransfersAllowedInvalidValue(t *testing.T) {
|
2016-08-05 21:13:31 +00:00
|
|
|
cfg := NewFrom(Values{
|
2017-04-12 21:29:11 +00:00
|
|
|
Git: map[string][]string{
|
|
|
|
"lfs.tustransfers": []string{"wat"},
|
2016-07-25 18:50:58 +00:00
|
|
|
},
|
2016-08-05 21:13:31 +00:00
|
|
|
})
|
2016-07-25 18:50:58 +00:00
|
|
|
|
2016-08-05 21:13:31 +00:00
|
|
|
b := cfg.TusTransfersAllowed()
|
2016-07-25 18:50:58 +00:00
|
|
|
assert.Equal(t, false, b)
|
|
|
|
}
|
|
|
|
|
2015-07-10 20:54:06 +00:00
|
|
|
func TestLoadValidExtension(t *testing.T) {
|
2016-08-05 21:13:31 +00:00
|
|
|
cfg := NewFrom(Values{
|
2017-10-18 20:45:53 +00:00
|
|
|
Git: map[string][]string{
|
|
|
|
"lfs.extension.foo.clean": []string{"foo-clean %f"},
|
|
|
|
"lfs.extension.foo.smudge": []string{"foo-smudge %f"},
|
|
|
|
"lfs.extension.foo.priority": []string{"2"},
|
2015-07-10 20:54:06 +00:00
|
|
|
},
|
2017-10-18 20:45:53 +00:00
|
|
|
})
|
2015-07-10 20:54:06 +00:00
|
|
|
|
2016-08-05 21:13:31 +00:00
|
|
|
ext := cfg.Extensions()["foo"]
|
2015-07-10 20:54:06 +00:00
|
|
|
|
|
|
|
assert.Equal(t, "foo", ext.Name)
|
|
|
|
assert.Equal(t, "foo-clean %f", ext.Clean)
|
|
|
|
assert.Equal(t, "foo-smudge %f", ext.Smudge)
|
|
|
|
assert.Equal(t, 2, ext.Priority)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestLoadInvalidExtension(t *testing.T) {
|
2016-08-05 21:13:31 +00:00
|
|
|
cfg := NewFrom(Values{})
|
|
|
|
ext := cfg.Extensions()["foo"]
|
2015-07-10 20:54:06 +00:00
|
|
|
|
|
|
|
assert.Equal(t, "", ext.Name)
|
|
|
|
assert.Equal(t, "", ext.Clean)
|
|
|
|
assert.Equal(t, "", ext.Smudge)
|
|
|
|
assert.Equal(t, 0, ext.Priority)
|
|
|
|
}
|
2015-08-28 21:19:52 +00:00
|
|
|
|
2016-05-31 16:38:18 +00:00
|
|
|
func TestFetchIncludeExcludesAreCleaned(t *testing.T) {
|
2016-08-05 21:13:31 +00:00
|
|
|
cfg := NewFrom(Values{
|
2017-04-12 21:29:11 +00:00
|
|
|
Git: map[string][]string{
|
|
|
|
"lfs.fetchinclude": []string{"/path/to/clean/"},
|
|
|
|
"lfs.fetchexclude": []string{"/other/path/to/clean/"},
|
2016-08-03 23:42:21 +00:00
|
|
|
},
|
2016-05-31 16:38:18 +00:00
|
|
|
})
|
|
|
|
|
2016-08-05 21:13:31 +00:00
|
|
|
assert.Equal(t, []string{"/path/to/clean"}, cfg.FetchIncludePaths())
|
|
|
|
assert.Equal(t, []string{"/other/path/to/clean"}, cfg.FetchExcludePaths())
|
2016-05-31 16:38:18 +00:00
|
|
|
}
|
2018-10-04 21:53:06 +00:00
|
|
|
|
|
|
|
func TestRepositoryPermissions(t *testing.T) {
|
|
|
|
perms := 0666 & ^umask()
|
|
|
|
|
|
|
|
values := map[string]int{
|
|
|
|
"group": 0660,
|
|
|
|
"true": 0660,
|
|
|
|
"1": 0660,
|
|
|
|
"YES": 0660,
|
|
|
|
"all": 0664,
|
|
|
|
"world": 0664,
|
|
|
|
"everybody": 0664,
|
|
|
|
"2": 0664,
|
|
|
|
"false": perms,
|
|
|
|
"umask": perms,
|
|
|
|
"0": perms,
|
|
|
|
"NO": perms,
|
|
|
|
"this does not remotely look like a valid value": perms,
|
|
|
|
"0664": 0664,
|
|
|
|
"0666": 0666,
|
|
|
|
"0600": 0600,
|
|
|
|
"0660": 0660,
|
|
|
|
"0644": 0644,
|
|
|
|
}
|
|
|
|
|
|
|
|
for key, val := range values {
|
|
|
|
cfg := NewFrom(Values{
|
|
|
|
Git: map[string][]string{
|
|
|
|
"core.sharedrepository": []string{key},
|
|
|
|
},
|
|
|
|
})
|
2018-12-04 17:27:25 +00:00
|
|
|
assert.Equal(t, os.FileMode(val), cfg.RepositoryPermissions(false))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestRepositoryPermissionsExectable(t *testing.T) {
|
|
|
|
perms := 0777 & ^umask()
|
|
|
|
|
|
|
|
values := map[string]int{
|
|
|
|
"group": 0770,
|
|
|
|
"true": 0770,
|
|
|
|
"1": 0770,
|
|
|
|
"YES": 0770,
|
|
|
|
"all": 0775,
|
|
|
|
"world": 0775,
|
|
|
|
"everybody": 0775,
|
|
|
|
"2": 0775,
|
|
|
|
"false": perms,
|
|
|
|
"umask": perms,
|
|
|
|
"0": perms,
|
|
|
|
"NO": perms,
|
|
|
|
"this does not remotely look like a valid value": perms,
|
|
|
|
"0664": 0775,
|
|
|
|
"0666": 0777,
|
|
|
|
"0600": 0700,
|
|
|
|
"0660": 0770,
|
|
|
|
"0644": 0755,
|
|
|
|
}
|
|
|
|
|
|
|
|
for key, val := range values {
|
|
|
|
cfg := NewFrom(Values{
|
|
|
|
Git: map[string][]string{
|
|
|
|
"core.sharedrepository": []string{key},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
assert.Equal(t, os.FileMode(val), cfg.RepositoryPermissions(true))
|
2018-10-04 21:53:06 +00:00
|
|
|
}
|
|
|
|
}
|
2018-10-11 15:01:05 +00:00
|
|
|
|
|
|
|
func TestCurrentUser(t *testing.T) {
|
|
|
|
cfg := NewFrom(Values{
|
|
|
|
Git: map[string][]string{
|
|
|
|
"user.name": []string{"Pat Doe"},
|
|
|
|
"user.email": []string{"pdoe@example.org"},
|
|
|
|
},
|
|
|
|
Os: map[string][]string{
|
|
|
|
"EMAIL": []string{"pdoe@example.com"},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
|
|
|
|
name, email := cfg.CurrentCommitter()
|
|
|
|
assert.Equal(t, name, "Pat Doe")
|
|
|
|
assert.Equal(t, email, "pdoe@example.org")
|
|
|
|
|
|
|
|
cfg = NewFrom(Values{
|
|
|
|
Git: map[string][]string{
|
|
|
|
"user.name": []string{"Pat Doe"},
|
|
|
|
},
|
|
|
|
Os: map[string][]string{
|
|
|
|
"EMAIL": []string{"pdoe@example.com"},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
|
|
|
|
name, email = cfg.CurrentCommitter()
|
|
|
|
assert.Equal(t, name, "Pat Doe")
|
|
|
|
assert.Equal(t, email, "pdoe@example.com")
|
|
|
|
|
|
|
|
cfg = NewFrom(Values{
|
|
|
|
Git: map[string][]string{
|
|
|
|
"user.name": []string{"Pat Doe"},
|
|
|
|
"user.email": []string{"pdoe@example.org"},
|
|
|
|
},
|
|
|
|
Os: map[string][]string{
|
|
|
|
"GIT_COMMITTER_NAME": []string{"Sam Roe"},
|
|
|
|
"GIT_COMMITTER_EMAIL": []string{"sroe@example.net"},
|
|
|
|
"EMAIL": []string{"pdoe@example.com"},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
|
|
|
|
name, email = cfg.CurrentCommitter()
|
|
|
|
assert.Equal(t, name, "Sam Roe")
|
|
|
|
assert.Equal(t, email, "sroe@example.net")
|
2018-10-11 18:39:18 +00:00
|
|
|
|
|
|
|
cfg = NewFrom(Values{
|
|
|
|
Git: map[string][]string{
|
|
|
|
"user.name": []string{"Pat Doe"},
|
|
|
|
"user.email": []string{"pdoe@example.org"},
|
|
|
|
},
|
|
|
|
Os: map[string][]string{
|
|
|
|
"GIT_AUTHOR_NAME": []string{"Sam Roe"},
|
|
|
|
"GIT_AUTHOR_EMAIL": []string{"sroe@example.net"},
|
|
|
|
"EMAIL": []string{"pdoe@example.com"},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
|
|
|
|
name, email = cfg.CurrentCommitter()
|
|
|
|
assert.Equal(t, name, "Pat Doe")
|
|
|
|
assert.Equal(t, email, "pdoe@example.org")
|
|
|
|
|
|
|
|
name, email = cfg.CurrentAuthor()
|
|
|
|
assert.Equal(t, name, "Sam Roe")
|
|
|
|
assert.Equal(t, email, "sroe@example.net")
|
2018-10-11 15:01:05 +00:00
|
|
|
}
|
2018-10-12 18:53:07 +00:00
|
|
|
|
|
|
|
func TestCurrentTimestamp(t *testing.T) {
|
|
|
|
m := map[string]string{
|
|
|
|
"1136239445 -0700": "2006-01-02T15:04:05-07:00",
|
|
|
|
"Mon, 02 Jan 2006 15:04:05 -0700": "2006-01-02T15:04:05-07:00",
|
|
|
|
"2006-01-02T15:04:05-0700": "2006-01-02T15:04:05-07:00",
|
|
|
|
"2006-01-02 15:04:05-0700": "2006-01-02T15:04:05-07:00",
|
|
|
|
"2006.01.02T15:04:05-0700": "2006-01-02T15:04:05-07:00",
|
|
|
|
"2006.01.02 15:04:05-0700": "2006-01-02T15:04:05-07:00",
|
|
|
|
"01/02/2006T15:04:05-0700": "2006-01-02T15:04:05-07:00",
|
|
|
|
"01/02/2006 15:04:05-0700": "2006-01-02T15:04:05-07:00",
|
|
|
|
"02.01.2006T15:04:05-0700": "2006-01-02T15:04:05-07:00",
|
|
|
|
"02.01.2006 15:04:05-0700": "2006-01-02T15:04:05-07:00",
|
|
|
|
"2006-01-02T15:04:05Z": "2006-01-02T15:04:05Z",
|
|
|
|
"2006-01-02 15:04:05Z": "2006-01-02T15:04:05Z",
|
|
|
|
"2006.01.02T15:04:05Z": "2006-01-02T15:04:05Z",
|
|
|
|
"2006.01.02 15:04:05Z": "2006-01-02T15:04:05Z",
|
|
|
|
"01/02/2006T15:04:05Z": "2006-01-02T15:04:05Z",
|
|
|
|
"01/02/2006 15:04:05Z": "2006-01-02T15:04:05Z",
|
|
|
|
"02.01.2006T15:04:05Z": "2006-01-02T15:04:05Z",
|
|
|
|
"02.01.2006 15:04:05Z": "2006-01-02T15:04:05Z",
|
|
|
|
"not a date": "default",
|
|
|
|
"": "default",
|
|
|
|
}
|
|
|
|
|
|
|
|
for val, res := range m {
|
|
|
|
cfg := NewFrom(Values{
|
|
|
|
Os: map[string][]string{
|
|
|
|
"GIT_COMMITTER_DATE": []string{val},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
date := cfg.CurrentCommitterTimestamp()
|
|
|
|
|
|
|
|
if res == "default" {
|
|
|
|
assert.Equal(t, date, cfg.timestamp)
|
|
|
|
} else {
|
|
|
|
assert.Equal(t, date.Format(time.RFC3339), res)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|