diff options
author | Ahmad Sherif <ahmad.m.sherif@gmail.com> | 2017-09-26 18:04:55 +0300 |
---|---|---|
committer | Ahmad Sherif <ahmad.m.sherif@gmail.com> | 2017-09-26 18:04:55 +0300 |
commit | 2562f4292a925516b1bda897bf191fff7cc98fbc (patch) | |
tree | 09edda8bb551fe29be280d0d77055ed176665d46 | |
parent | 9cf0bb0a570c8d901bc1fdf10317424beb907f6d (diff) | |
parent | c3f274be3d77dcee1bc0343aaeafa7767e158eea (diff) |
Merge branch 'gitaly-ruby-config-mandatory' into 'master'
Make gitaly-ruby config mandatory
Closes #590
See merge request gitlab-org/gitaly!373
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | internal/config/config.go | 16 | ||||
-rw-r--r-- | internal/config/config_test.go | 37 |
3 files changed, 54 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index a833d196a..07397d57c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,8 @@ v0.41.0 https://gitlab.com/gitlab-org/gitaly/merge_requests/363 - Implement RepositoryService.UserCreateBranch https://gitlab.com/gitlab-org/gitaly/merge_requests/344 +- Make gitaly-ruby config mandatory + https://gitlab.com/gitlab-org/gitaly/merge_requests/373 v0.40.0 - Use context cancellation instead of command.Close diff --git a/internal/config/config.go b/internal/config/config.go index a755b39d4..7fea7bf8f 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -80,7 +80,13 @@ func Load(file io.Reader) error { // Validate checks the current Config for sanity. func Validate() error { - for _, err := range []error{validateStorages(), validateToken(), SetGitPath(), validateShell()} { + for _, err := range []error{ + validateStorages(), + validateToken(), + SetGitPath(), + validateShell(), + validateRuby(), + } { if err != nil { return err } @@ -96,6 +102,14 @@ func validateShell() error { return validateIsDirectory(Config.GitlabShell.Dir, "gitlab-shell.dir") } +func validateRuby() error { + if len(Config.Ruby.Dir) == 0 { + return fmt.Errorf("gitaly-ruby.dir is not set") + } + + return validateIsDirectory(Config.Ruby.Dir, "gitaly-ruby.dir") +} + func validateIsDirectory(path, name string) error { s, err := os.Stat(path) if err != nil { diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 05cbb48e2..2d61ba6c3 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -343,3 +343,40 @@ func TestValidateShellPath(t *testing.T) { } } + +func TestValidateRuby(t *testing.T) { + defer func(oldRuby Ruby) { + Config.Ruby = oldRuby + }(Config.Ruby) + + tmpDir, err := ioutil.TempDir("", "gitaly-test") + require.NoError(t, err) + defer os.RemoveAll(tmpDir) + + tmpFile := path.Join(tmpDir, "file") + require.NoError(t, ioutil.WriteFile(tmpFile, nil, 0644)) + + testCases := []struct { + dir string + ok bool + desc string + }{ + {dir: "", desc: "empty"}, + {dir: "/does/not/exist", desc: "does not exist"}, + {dir: tmpFile, desc: "exists but is not a directory"}, + {dir: tmpDir, ok: true, desc: "ok"}, + } + + for _, tc := range testCases { + t.Run(tc.desc, func(t *testing.T) { + Config.Ruby = Ruby{Dir: tc.dir} + + err := validateRuby() + if tc.ok { + require.NoError(t, err) + } else { + require.Error(t, err) + } + }) + } +} |