Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAhmad Sherif <ahmad.m.sherif@gmail.com>2017-09-26 18:04:55 +0300
committerAhmad Sherif <ahmad.m.sherif@gmail.com>2017-09-26 18:04:55 +0300
commit2562f4292a925516b1bda897bf191fff7cc98fbc (patch)
tree09edda8bb551fe29be280d0d77055ed176665d46
parent9cf0bb0a570c8d901bc1fdf10317424beb907f6d (diff)
parentc3f274be3d77dcee1bc0343aaeafa7767e158eea (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.md2
-rw-r--r--internal/config/config.go16
-rw-r--r--internal/config/config_test.go37
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)
+ }
+ })
+ }
+}