aboutsummaryrefslogtreecommitdiffstats
path: root/repository
diff options
context:
space:
mode:
authorAmine Hilaly <hilalyamine@gmail.com>2019-06-04 00:40:32 +0200
committerAmine Hilaly <hilalyamine@gmail.com>2019-06-17 23:33:32 +0200
commitee2ca519e62d80531030b4e323d6528293fd3238 (patch)
tree99f94ddb3fd92f959eeeea2ca3526b18ce1fc640 /repository
parent470996a0cef56551262a2fb436b778d8fe4be941 (diff)
downloadgit-bug-ee2ca519e62d80531030b4e323d6528293fd3238.tar.gz
Changes to Repo.RmConfigs
RmConfigs try to remove key/value or section from keyPrefix
Diffstat (limited to 'repository')
-rw-r--r--repository/git.go5
-rw-r--r--repository/git_test.go17
-rw-r--r--repository/mock_repo.go1
3 files changed, 22 insertions, 1 deletions
diff --git a/repository/git.go b/repository/git.go
index 801504f2..c8c45d6a 100644
--- a/repository/git.go
+++ b/repository/git.go
@@ -261,7 +261,12 @@ func (repo *GitRepo) ReadConfigString(key string) (string, error) {
// RmConfigs remove all key/value pair matching the key prefix
func (repo *GitRepo) RmConfigs(keyPrefix string) error {
+ // try to remove key/value pair by key
_, err := repo.runGitCommand("config", "--unset-all", keyPrefix)
+ if err != nil {
+ // try to remove section
+ _, err = repo.runGitCommand("config", "--remove-section", keyPrefix)
+ }
return err
}
diff --git a/repository/git_test.go b/repository/git_test.go
index 32634cfb..8bd3aa8e 100644
--- a/repository/git_test.go
+++ b/repository/git_test.go
@@ -35,7 +35,6 @@ func TestConfig(t *testing.T) {
configs, err = repo.ReadConfigs("section")
assert.NoError(t, err)
-
assert.Equal(t, configs, map[string]string{
"section.key": "value",
})
@@ -43,9 +42,25 @@ func TestConfig(t *testing.T) {
_, err = repo.ReadConfigBool("section.true")
assert.Equal(t, ErrNoConfigEntry, err)
+ err = repo.RmConfigs("section.nonexistingkey")
+ assert.Error(t, err)
+
err = repo.RmConfigs("section.key")
assert.NoError(t, err)
_, err = repo.ReadConfigString("section.key")
assert.Equal(t, ErrNoConfigEntry, err)
+
+ err = repo.RmConfigs("nonexistingsection")
+ assert.Error(t, err)
+
+ err = repo.RmConfigs("section")
+ assert.NoError(t, err)
+
+ _, err = repo.ReadConfigString("section.key")
+ assert.Error(t, err)
+
+ err = repo.RmConfigs("section.key")
+ assert.Error(t, err)
+
}
diff --git a/repository/mock_repo.go b/repository/mock_repo.go
index 2dc4868e..8dac1a66 100644
--- a/repository/mock_repo.go
+++ b/repository/mock_repo.go
@@ -103,6 +103,7 @@ func (r *mockRepoForTest) ReadConfigString(key string) (string, error) {
return val, nil
}
+// RmConfig remove all key/value pair matching the key prefix
func (r *mockRepoForTest) RmConfigs(keyPrefix string) error {
for key := range r.config {
if strings.HasPrefix(key, keyPrefix) {