diff --git a/utils.go b/utils.go index 71b80de7..f0fcfacf 100644 --- a/utils.go +++ b/utils.go @@ -11,6 +11,7 @@ import ( "path" "reflect" "runtime" + "strconv" "strings" ) @@ -149,3 +150,10 @@ func resolveAddress(addr []string) string { panic("too many parameters") } } + +// Determine whether the PORT environment variable is valid。 +// If the PORT can be parsed to int(0-65535),return true。 +func isValidPortEnvVar(portString string) bool { + _, err := strconv.ParseUint(portString, 10, 16) + return err == nil +} diff --git a/utils_test.go b/utils_test.go index 9b57c57b..15bcfb67 100644 --- a/utils_test.go +++ b/utils_test.go @@ -137,3 +137,14 @@ func TestMarshalXMLforH(t *testing.T) { e := h.MarshalXML(enc, x) assert.Error(t, e) } + +func TestIsValidPortEnvVar(t *testing.T) { + assert.Equal(t, false, isValidPortEnvVar("abc")) + assert.Equal(t, false, isValidPortEnvVar("-1")) + assert.Equal(t, true, isValidPortEnvVar("1")) + assert.Equal(t, true, isValidPortEnvVar("1000")) + assert.Equal(t, true, isValidPortEnvVar("10000")) + assert.Equal(t, true, isValidPortEnvVar("65535")) + assert.Equal(t, false, isValidPortEnvVar("65536")) + assert.Equal(t, false, isValidPortEnvVar("655360")) +}