未验证 提交 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 ...@@ -34,12 +34,13 @@ func (j *Jenkins) SendPureRequest(path string, httpParameters *devops.HttpParame
// provider request header to call jenkins api. // provider request header to call jenkins api.
// transfer bearer token to basic token for inner Oauth and Jeknins // transfer bearer token to basic token for inner Oauth and Jeknins
func (j *Jenkins) SendPureRequestWithHeaderResp(path string, httpParameters *devops.HttpParameters) ([]byte, http.Header, error) { 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 { if err != nil {
klog.Error(err) klog.V(8).Info(err)
return nil, nil, err return nil, nil, err
} }
apiURL.RawQuery = httpParameters.Url.RawQuery
client := &http.Client{Timeout: 30 * time.Second} client := &http.Client{Timeout: 30 * time.Second}
header := httpParameters.Header header := httpParameters.Header
...@@ -47,7 +48,7 @@ func (j *Jenkins) SendPureRequestWithHeaderResp(path string, httpParameters *dev ...@@ -47,7 +48,7 @@ func (j *Jenkins) SendPureRequestWithHeaderResp(path string, httpParameters *dev
newRequest := &http.Request{ newRequest := &http.Request{
Method: httpParameters.Method, Method: httpParameters.Method,
URL: Url, URL: apiURL,
Header: header, Header: header,
Body: httpParameters.Body, Body: httpParameters.Body,
Form: httpParameters.Form, Form: httpParameters.Form,
......
...@@ -74,10 +74,9 @@ func getRespBody(resp *http.Response) ([]byte, error) { ...@@ -74,10 +74,9 @@ func getRespBody(resp *http.Response) ([]byte, error) {
// ParseJenkinsQuery Parse the special query of jenkins. // ParseJenkinsQuery Parse the special query of jenkins.
// ParseQuery in the standard library makes the query not re-encode // ParseQuery in the standard library makes the query not re-encode
func ParseJenkinsQuery(query string) (url.Values, error) { func ParseJenkinsQuery(query string) (result url.Values, err error) {
m := make(url.Values) result = make(url.Values)
err := error(nil) for query != "" && err == nil {
for query != "" {
key := query key := query
if i := strings.IndexAny(key, "&"); i >= 0 { if i := strings.IndexAny(key, "&"); i >= 0 {
key, query = key[:i], key[i+1:] key, query = key[:i], key[i+1:]
...@@ -91,23 +90,13 @@ func ParseJenkinsQuery(query string) (url.Values, error) { ...@@ -91,23 +90,13 @@ func ParseJenkinsQuery(query string) (url.Values, error) {
if i := strings.Index(key, "="); i >= 0 { if i := strings.Index(key, "="); i >= 0 {
key, value = key[:i], key[i+1:] key, value = key[:i], key[i+1:]
} }
key, err1 := url.QueryUnescape(key) if key, err = url.QueryUnescape(key); err == nil {
if err1 != nil { if value, err = url.QueryUnescape(value); err == nil {
if err == nil { result[key] = append(result[key], value)
err = err1
} }
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 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.
先完成此消息的编辑!
想要评论请 注册