未验证 提交 e74ca0ea 编写于 作者: K KubeSphere CI Bot 提交者: GitHub

Merge pull request #3335 from LinuxSuRen/fix-pipeline-run-err-count

Fix the wrong count of total Pipeline Run number
......@@ -34,12 +34,13 @@ func (j *Jenkins) SendPureRequest(path string, httpParameters *devops.HttpParame
// provider request header to call jenkins api.
// transfer bearer token to basic token for inner Oauth and Jeknins
func (j *Jenkins) SendPureRequestWithHeaderResp(path string, httpParameters *devops.HttpParameters) ([]byte, http.Header, error) {
Url, err := url.Parse(j.Server + path)
apiURL, err := url.Parse(j.Server + path)
if err != nil {
klog.Error(err)
klog.V(8).Info(err)
return nil, nil, err
}
apiURL.RawQuery = httpParameters.Url.RawQuery
client := &http.Client{Timeout: 30 * time.Second}
header := httpParameters.Header
......@@ -47,7 +48,7 @@ func (j *Jenkins) SendPureRequestWithHeaderResp(path string, httpParameters *dev
newRequest := &http.Request{
Method: httpParameters.Method,
URL: Url,
URL: apiURL,
Header: header,
Body: httpParameters.Body,
Form: httpParameters.Form,
......
......@@ -74,10 +74,9 @@ func getRespBody(resp *http.Response) ([]byte, error) {
// ParseJenkinsQuery Parse the special query of jenkins.
// ParseQuery in the standard library makes the query not re-encode
func ParseJenkinsQuery(query string) (url.Values, error) {
m := make(url.Values)
err := error(nil)
for query != "" {
func ParseJenkinsQuery(query string) (result url.Values, err error) {
result = make(url.Values)
for query != "" && err == nil {
key := query
if i := strings.IndexAny(key, "&"); i >= 0 {
key, query = key[:i], key[i+1:]
......@@ -91,23 +90,13 @@ func ParseJenkinsQuery(query string) (url.Values, error) {
if i := strings.Index(key, "="); i >= 0 {
key, value = key[:i], key[i+1:]
}
key, err1 := url.QueryUnescape(key)
if err1 != nil {
if err == nil {
err = err1
if key, err = url.QueryUnescape(key); err == nil {
if value, err = url.QueryUnescape(value); err == nil {
result[key] = append(result[key], value)
}
continue
}
value, err1 = url.QueryUnescape(value)
if err1 != nil {
if err == nil {
err = err1
}
continue
}
m[key] = append(m[key], value)
}
return m, err
return
}
type JenkinsBlueTime time.Time
......
package jenkins
import (
"github.com/stretchr/testify/assert"
"net/url"
"testing"
)
func TestParseJenkinsQuery(t *testing.T) {
table := []testData{
{
param: "start=0&limit=10&branch=master",
expected: url.Values{
"start": []string{"0"},
"limit": []string{"10"},
"branch": []string{"master"},
}, err: false,
},
{
param: "branch=master", expected: url.Values{
"branch": []string{"master"},
}, err: false,
},
{
param: "&branch=master", expected: url.Values{
"branch": []string{"master"},
}, err: false,
},
{
param: "branch=master&", expected: url.Values{
"branch": []string{"master"},
}, err: false,
},
{
param: "branch=%gg", expected: url.Values{}, err: true,
},
{
param: "%gg=fake", expected: url.Values{}, err: true,
},
}
for index, item := range table {
result, err := ParseJenkinsQuery(item.param)
if item.err {
assert.NotNil(t, err, "index: [%d], unexpected error happen %v", index, err)
} else {
assert.Nil(t, err, "index: [%d], unexpected error happen %v", index, err)
}
assert.Equal(t, item.expected, result, "index: [%d], result do not match with the expect value", index)
}
}
type testData struct {
param string
expected interface{}
err bool
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册