aboutsummaryrefslogtreecommitdiffstats
path: root/config/config_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'config/config_test.go')
-rw-r--r--config/config_test.go204
1 files changed, 37 insertions, 167 deletions
diff --git a/config/config_test.go b/config/config_test.go
index a2ece2a..e68626b 100644
--- a/config/config_test.go
+++ b/config/config_test.go
@@ -1,9 +1,8 @@
package config
import (
- . "gopkg.in/check.v1"
"github.com/go-git/go-git/v5/plumbing"
- format "github.com/go-git/go-git/v5/plumbing/format/config"
+ . "gopkg.in/check.v1"
)
type ConfigSuite struct{}
@@ -12,65 +11,23 @@ var _ = Suite(&ConfigSuite{})
func (s *ConfigSuite) TestUnmarshal(c *C) {
input := []byte(`[core]
- bare = true
+ bare = true
worktree = foo
commentchar = bar
+[user]
+ name = John Doe
+ email = john@example.com
+[author]
+ name = Jane Roe
+ email = jane@example.com
+[committer]
+ name = Richard Roe
+ email = richard@example.com
[pack]
window = 20
[remote "origin"]
- url = git@github.com:mcuadros/go-git.git
- fetch = +refs/heads/*:refs/remotes/origin/*
-[remote "alt"]
url = git@github.com:mcuadros/go-git.git
- url = git@github.com:src-d/go-git.git
fetch = +refs/heads/*:refs/remotes/origin/*
- fetch = +refs/pull/*:refs/remotes/origin/pull/*
-[remote "win-local"]
- url = X:\\Git\\
-[submodule "qux"]
- path = qux
- url = https://github.com/foo/qux.git
- branch = bar
-[branch "master"]
- remote = origin
- merge = refs/heads/master
-`)
-
- cfg := NewConfig()
- err := cfg.Unmarshal(input)
- c.Assert(err, IsNil)
-
- c.Assert(cfg.Core.IsBare, Equals, true)
- c.Assert(cfg.Core.Worktree, Equals, "foo")
- c.Assert(cfg.Core.CommentChar, Equals, "bar")
- c.Assert(cfg.Pack.Window, Equals, uint(20))
- c.Assert(cfg.Remotes, HasLen, 3)
- c.Assert(cfg.Remotes["origin"].Name, Equals, "origin")
- c.Assert(cfg.Remotes["origin"].URLs, DeepEquals, []string{"git@github.com:mcuadros/go-git.git"})
- c.Assert(cfg.Remotes["origin"].Fetch, DeepEquals, []RefSpec{"+refs/heads/*:refs/remotes/origin/*"})
- c.Assert(cfg.Remotes["alt"].Name, Equals, "alt")
- c.Assert(cfg.Remotes["alt"].URLs, DeepEquals, []string{"git@github.com:mcuadros/go-git.git", "git@github.com:src-d/go-git.git"})
- c.Assert(cfg.Remotes["alt"].Fetch, DeepEquals, []RefSpec{"+refs/heads/*:refs/remotes/origin/*", "+refs/pull/*:refs/remotes/origin/pull/*"})
- c.Assert(cfg.Remotes["win-local"].Name, Equals, "win-local")
- c.Assert(cfg.Remotes["win-local"].URLs, DeepEquals, []string{"X:\\Git\\"})
- c.Assert(cfg.Submodules, HasLen, 1)
- c.Assert(cfg.Submodules["qux"].Name, Equals, "qux")
- c.Assert(cfg.Submodules["qux"].URL, Equals, "https://github.com/foo/qux.git")
- c.Assert(cfg.Submodules["qux"].Branch, Equals, "bar")
- c.Assert(cfg.Branches["master"].Remote, Equals, "origin")
- c.Assert(cfg.Branches["master"].Merge, Equals, plumbing.ReferenceName("refs/heads/master"))
-}
-
-func (s *ConfigSuite) TestMergedUnmarshal(c *C) {
- localInput := []byte(`[core]
- bare = true
- worktree = foo
- commentchar = bar
-[pack]
- window = 20
-[remote "origin"]
- url = git@github.com:mcuadros/go-git.git
- fetch = +refs/heads/*:refs/remotes/origin/*
[remote "alt"]
url = git@github.com:mcuadros/go-git.git
url = git@github.com:src-d/go-git.git
@@ -79,37 +36,27 @@ func (s *ConfigSuite) TestMergedUnmarshal(c *C) {
[remote "win-local"]
url = X:\\Git\\
[submodule "qux"]
- path = qux
- url = https://github.com/foo/qux.git
+ path = qux
+ url = https://github.com/foo/qux.git
branch = bar
[branch "master"]
- remote = origin
- merge = refs/heads/master
-[user]
- name = Override
-`)
-
- globalInput := []byte(`
-[user]
- name = Soandso
- email = soandso@example.com
-[core]
- editor = nvim
-[push]
- default = simple
+ remote = origin
+ merge = refs/heads/master
`)
cfg := NewConfig()
-
- err := cfg.UnmarshalScoped(format.LocalScope, localInput)
- c.Assert(err, IsNil)
-
- err = cfg.UnmarshalScoped(format.GlobalScope, globalInput)
+ err := cfg.Unmarshal(input)
c.Assert(err, IsNil)
c.Assert(cfg.Core.IsBare, Equals, true)
c.Assert(cfg.Core.Worktree, Equals, "foo")
c.Assert(cfg.Core.CommentChar, Equals, "bar")
+ c.Assert(cfg.User.Name, Equals, "John Doe")
+ c.Assert(cfg.User.Email, Equals, "john@example.com")
+ c.Assert(cfg.Author.Name, Equals, "Jane Roe")
+ c.Assert(cfg.Author.Email, Equals, "jane@example.com")
+ c.Assert(cfg.Committer.Name, Equals, "Richard Roe")
+ c.Assert(cfg.Committer.Email, Equals, "richard@example.com")
c.Assert(cfg.Pack.Window, Equals, uint(20))
c.Assert(cfg.Remotes, HasLen, 3)
c.Assert(cfg.Remotes["origin"].Name, Equals, "origin")
@@ -126,9 +73,6 @@ func (s *ConfigSuite) TestMergedUnmarshal(c *C) {
c.Assert(cfg.Submodules["qux"].Branch, Equals, "bar")
c.Assert(cfg.Branches["master"].Remote, Equals, "origin")
c.Assert(cfg.Branches["master"].Merge, Equals, plumbing.ReferenceName("refs/heads/master"))
- c.Assert(cfg.Merged.Section("user").Option("name"), Equals, "Override")
- c.Assert(cfg.Merged.Section("user").Option("email"), Equals, "soandso@example.com")
- c.Assert(cfg.Merged.Section("push").Option("default"), Equals, "simple")
}
func (s *ConfigSuite) TestMarshal(c *C) {
@@ -190,100 +134,20 @@ func (s *ConfigSuite) TestMarshal(c *C) {
c.Assert(string(b), Equals, string(output))
}
-func (s *ConfigSuite) TestMergedMarshal(c *C) {
- localOutput := []byte(`[user]
- name = Override
-[custom]
- key = value
-[core]
- bare = true
- worktree = bar
-[pack]
- window = 20
-[remote "alt"]
- url = git@github.com:mcuadros/go-git.git
- url = git@github.com:src-d/go-git.git
- fetch = +refs/heads/*:refs/remotes/origin/*
- fetch = +refs/pull/*:refs/remotes/origin/pull/*
-[remote "origin"]
- url = git@github.com:mcuadros/go-git.git
-[remote "win-local"]
- url = "X:\\Git\\"
-[submodule "qux"]
- url = https://github.com/foo/qux.git
-[branch "master"]
- remote = origin
- merge = refs/heads/master
-`)
-
- globalOutput := []byte(`[user]
- name = Soandso
- email = soandso@example.com
-[core]
- editor = nvim
-[push]
- default = simple
-`)
-
- cfg := NewConfig()
-
- cfg.Core.IsBare = true
- cfg.Core.Worktree = "bar"
- cfg.Pack.Window = 20
- cfg.Remotes["origin"] = &RemoteConfig{
- Name: "origin",
- URLs: []string{"git@github.com:mcuadros/go-git.git"},
- }
-
- cfg.Remotes["alt"] = &RemoteConfig{
- Name: "alt",
- URLs: []string{"git@github.com:mcuadros/go-git.git", "git@github.com:src-d/go-git.git"},
- Fetch: []RefSpec{"+refs/heads/*:refs/remotes/origin/*", "+refs/pull/*:refs/remotes/origin/pull/*"},
- }
-
- cfg.Remotes["win-local"] = &RemoteConfig{
- Name: "win-local",
- URLs: []string{"X:\\Git\\"},
- }
-
- cfg.Submodules["qux"] = &Submodule{
- Name: "qux",
- URL: "https://github.com/foo/qux.git",
- }
-
- cfg.Branches["master"] = &Branch{
- Name: "master",
- Remote: "origin",
- Merge: "refs/heads/master",
- }
-
- cfg.Merged.GlobalConfig().Section("user").SetOption("name", "Soandso")
- cfg.Merged.LocalConfig().Section("user").SetOption("name", "Override")
- cfg.Merged.GlobalConfig().Section("user").SetOption("email", "soandso@example.com")
- cfg.Merged.GlobalConfig().Section("core").AddOption("editor", "nvim")
- cfg.Merged.LocalConfig().Section("custom").SetOption("key", "value")
- cfg.Merged.GlobalConfig().Section("push").AddOption("default", "simple")
-
- c.Assert(cfg.Merged.Section("user").Option("name"), Equals, "Override")
-
- localBytes, err := cfg.Marshal()
- c.Assert(err, IsNil)
- c.Assert(string(localBytes), Equals, string(localOutput))
-
- globalBytes, err := cfg.MarshalScope(format.GlobalScope)
- c.Assert(err, IsNil)
- c.Assert(string(globalBytes), Equals, string(globalOutput))
-
- systemBytes, err := cfg.MarshalScope(format.SystemScope)
- c.Assert(err, IsNil)
- c.Assert(string(systemBytes), Equals, "")
-}
-
func (s *ConfigSuite) TestUnmarshalMarshal(c *C) {
input := []byte(`[core]
bare = true
worktree = foo
custom = ignored
+[user]
+ name = John Doe
+ email = john@example.com
+[author]
+ name = Jane Roe
+ email = jane@example.com
+[committer]
+ name = Richard Roe
+ email = richard@example.co
[pack]
window = 20
[remote "origin"]
@@ -306,6 +170,12 @@ func (s *ConfigSuite) TestUnmarshalMarshal(c *C) {
c.Assert(string(output), DeepEquals, string(input))
}
+func (s *ConfigSuite) TestLoadConfig(c *C) {
+ cfg, err := LoadConfig(GlobalScope)
+ c.Assert(err, IsNil)
+ c.Assert(cfg.User.Email, Not(Equals), "")
+}
+
func (s *ConfigSuite) TestValidateConfig(c *C) {
config := &Config{
Remotes: map[string]*RemoteConfig{