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

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessio Caiazza <acaiazza@gitlab.com>2020-01-22 13:18:56 +0300
committerAlessio Caiazza <acaiazza@gitlab.com>2020-01-22 13:18:56 +0300
commit030060877e2901912d98e0fdc200743d3b9f59aa (patch)
treeb6bc4fd36f7aece3abc63e237a068da95ed68fd8
parenta04541aaf6e26b556fb0ea4c49d80a1494abef9e (diff)
parente6056c5fce0a4a2f685fa606706d6d3389b1f96a (diff)
Merge branch 'fix-multistringflag-split' into 'master'
Return error if setting an empty value to a MultiStringFlag See merge request gitlab-org/gitlab-pages!218
-rw-r--r--README.md9
-rw-r--r--multi_string_flag.go6
-rw-r--r--multi_string_flag_test.go32
3 files changed, 46 insertions, 1 deletions
diff --git a/README.md b/README.md
index f81d582f..0c26c835 100644
--- a/README.md
+++ b/README.md
@@ -76,7 +76,14 @@ run in SSL-offloading mode, custom TLS certificates will not work.
Example:
```
$ make
-$ ./gitlab-pages -listen-https "" -listen-http ":8090" -pages-root path/to/gitlab/shared/pages -pages-domain example.com
+$ ./gitlab-pages -listen-http ":8090" -pages-root path/to/gitlab/shared/pages -pages-domain example.com
+```
+
+To run on HTTPS ensure you have a root certificate key pair available
+
+```
+$ make
+$ ./gitlab-pages -listen-https ":9090" -root-cert=path/to/example.com.crt -root-key=path/to/example.com.key -pages-root path/to/gitlab/shared/pages -pages-domain example.com
```
### Run daemon **in secure mode**
diff --git a/multi_string_flag.go b/multi_string_flag.go
index 25e9b9fe..699529a0 100644
--- a/multi_string_flag.go
+++ b/multi_string_flag.go
@@ -1,9 +1,12 @@
package main
import (
+ "errors"
"strings"
)
+var errMultiStringSetEmptyValue = errors.New("value cannot be empty")
+
// MultiStringFlag implements the flag.Value interface and allows a string flag
// to be specified multiple times on the command line.
//
@@ -17,6 +20,9 @@ func (s *MultiStringFlag) String() string {
// Set appends the value to the list of parameters
func (s *MultiStringFlag) Set(value string) error {
+ if value == "" {
+ return errMultiStringSetEmptyValue
+ }
*s = append(*s, value)
return nil
}
diff --git a/multi_string_flag_test.go b/multi_string_flag_test.go
index 20cac831..5cddac98 100644
--- a/multi_string_flag_test.go
+++ b/multi_string_flag_test.go
@@ -16,5 +16,37 @@ func TestMultiStringFlagAppendsOnSet(t *testing.T) {
require.NoError(t, iface.Set("foo"))
require.NoError(t, iface.Set("bar"))
+ require.EqualError(t, iface.Set(""), "value cannot be empty")
+
require.Equal(t, MultiStringFlag{"foo", "bar"}, concrete)
}
+
+func TestMultiStringFlag_Split(t *testing.T) {
+ tests := []struct {
+ name string
+ s *MultiStringFlag
+ wantResult []string
+ }{
+ {
+ name: "empty_string",
+ s: &MultiStringFlag{}, // -flag ""
+ wantResult: []string{},
+ },
+ {
+ name: "one_value",
+ s: &MultiStringFlag{"value1"}, // -flag "value1"
+ wantResult: []string{"value1"},
+ },
+ {
+ name: "multiple_values",
+ s: &MultiStringFlag{"value1", "", "value3"}, // -flag "value1,,value3"
+ wantResult: []string{"value1", "", "value3"},
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ gotResult := tt.s.Split()
+ require.ElementsMatch(t, tt.wantResult, gotResult)
+ })
+ }
+}