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:
-rw-r--r--acceptance_test.go54
-rw-r--r--main.go6
-rw-r--r--multi_string_flag.go9
3 files changed, 55 insertions, 14 deletions
diff --git a/acceptance_test.go b/acceptance_test.go
index f71bd85f..d6fc1400 100644
--- a/acceptance_test.go
+++ b/acceptance_test.go
@@ -3,6 +3,7 @@ package main
import (
"fmt"
"io/ioutil"
+ "net"
"net/http"
"net/http/httptest"
"os"
@@ -307,21 +308,52 @@ func TestProxyRequest(t *testing.T) {
func TestEnvironmentVariablesConfig(t *testing.T) {
skipUnlessEnabled(t)
- os.Setenv("REDIRECT_HTTP", "true")
- defer func() { os.Unsetenv("REDIRECT_HTTP") }()
+ os.Setenv("LISTEN_HTTP", net.JoinHostPort(httpListener.Host, httpListener.Port))
+ defer func() { os.Unsetenv("LISTEN_HTTP") }()
- teardown := RunPagesProcess(t, *pagesBinary, listeners, "")
+ teardown := RunPagesProcess(t, *pagesBinary, []ListenSpec{}, "")
defer teardown()
- rsp, err := GetRedirectPage(t, httpListener, "group.gitlab-example.com", "project/")
- assert.NoError(t, err)
- defer rsp.Body.Close()
- assert.Equal(t, http.StatusTemporaryRedirect, rsp.StatusCode)
- assert.Equal(t, 1, len(rsp.Header["Location"]))
- assert.Equal(t, "https://group.gitlab-example.com/project/", rsp.Header.Get("Location"))
+ rsp, err := GetPageFromListener(t, httpListener, "group.gitlab-example.com:", "project/")
- rsp, err = GetPageFromListener(t, httpsListener, "group.gitlab-example.com", "project/")
assert.NoError(t, err)
- defer rsp.Body.Close()
+ rsp.Body.Close()
assert.Equal(t, http.StatusOK, rsp.StatusCode)
}
+
+func TestMixedConfigSources(t *testing.T) {
+ skipUnlessEnabled(t)
+ os.Setenv("LISTEN_HTTP", net.JoinHostPort(httpListener.Host, httpListener.Port))
+ defer func() { os.Unsetenv("LISTEN_HTTP") }()
+
+ teardown := RunPagesProcess(t, *pagesBinary, []ListenSpec{httpsListener}, "")
+ defer teardown()
+
+ for _, listener := range []ListenSpec{httpListener, httpsListener} {
+ rsp, err := GetPageFromListener(t, listener, "group.gitlab-example.com", "project/")
+
+ assert.NoError(t, err)
+ rsp.Body.Close()
+ assert.Equal(t, http.StatusOK, rsp.StatusCode)
+ }
+}
+
+func TestMultiFlagEnvironmentVariables(t *testing.T) {
+ skipUnlessEnabled(t)
+ listenSpec := []ListenSpec{{"http", "127.0.0.1", "37001"}, {"http", "127.0.0.1", "37002"}}
+ envVarValue := fmt.Sprintf("%s,%s", net.JoinHostPort("127.0.0.1", "37001"), net.JoinHostPort("127.0.0.1", "37002"))
+
+ os.Setenv("LISTEN_HTTP", envVarValue)
+ defer func() { os.Unsetenv("LISTEN_HTTP") }()
+
+ teardown := RunPagesProcess(t, *pagesBinary, []ListenSpec{}, "")
+ defer teardown()
+
+ for _, listener := range listenSpec {
+ rsp, err := GetPageFromListener(t, listener, "group.gitlab-example.com", "project/")
+
+ assert.NoError(t, err)
+ rsp.Body.Close()
+ assert.Equal(t, http.StatusOK, rsp.StatusCode)
+ }
+}
diff --git a/main.go b/main.go
index ba301a70..5ca5470b 100644
--- a/main.go
+++ b/main.go
@@ -99,19 +99,19 @@ func appMain() {
config := configFromFlags()
- for _, addr := range listenHTTP {
+ for _, addr := range listenHTTP.Split() {
l, fd := createSocket(addr)
defer l.Close()
config.ListenHTTP = append(config.ListenHTTP, fd)
}
- for _, addr := range listenHTTPS {
+ for _, addr := range listenHTTPS.Split() {
l, fd := createSocket(addr)
defer l.Close()
config.ListenHTTPS = append(config.ListenHTTPS, fd)
}
- for _, addr := range listenProxy {
+ for _, addr := range listenProxy.Split() {
l, fd := createSocket(addr)
defer l.Close()
config.ListenProxy = append(config.ListenProxy, fd)
diff --git a/multi_string_flag.go b/multi_string_flag.go
index ba6d92ea..25e9b9fe 100644
--- a/multi_string_flag.go
+++ b/multi_string_flag.go
@@ -20,3 +20,12 @@ func (s *MultiStringFlag) Set(value string) error {
*s = append(*s, value)
return nil
}
+
+// Split each flag
+func (s *MultiStringFlag) Split() (result []string) {
+ for _, str := range *s {
+ result = append(result, strings.Split(str, ",")...)
+ }
+
+ return
+}