diff options
Diffstat (limited to 'repository')
-rw-r--r-- | repository/git.go | 5 | ||||
-rw-r--r-- | repository/git_test.go | 17 | ||||
-rw-r--r-- | repository/mock_repo.go | 1 |
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) { |