diff options
author | Ethan Koenig <ethantkoenig@gmail.com> | 2017-12-10 18:15:27 -0800 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2017-12-11 10:15:27 +0800 |
commit | 682ac11958fed286bb0ca4d488084953f50779ef (patch) | |
tree | 37e95886620413e7bcbe1e5d7174c4482624e249 /integrations | |
parent | defc97afc21498fbff9c9c1714c13d980eb84ffc (diff) | |
download | gitea-682ac11958fed286bb0ca4d488084953f50779ef.tar.gz gitea-682ac11958fed286bb0ca4d488084953f50779ef.zip |
Log unexpected responses in integration tests (#3138)
* Log flash error message in integration tests
* Also log short, non-HTML responses
Diffstat (limited to 'integrations')
-rw-r--r-- | integrations/integration_test.go | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/integrations/integration_test.go b/integrations/integration_test.go index f9e0d5f13c..d8e97395fa 100644 --- a/integrations/integration_test.go +++ b/integrations/integration_test.go @@ -26,6 +26,7 @@ import ( "code.gitea.io/gitea/routers" "code.gitea.io/gitea/routers/routes" + "github.com/PuerkitoBio/goquery" "github.com/Unknwon/com" "github.com/stretchr/testify/assert" "gopkg.in/macaron.v1" @@ -260,12 +261,37 @@ func MakeRequest(t testing.TB, req *http.Request, expectedStatus int) *httptest. recorder := httptest.NewRecorder() mac.ServeHTTP(recorder, req) if expectedStatus != NoExpectedStatus { - assert.EqualValues(t, expectedStatus, recorder.Code, - "Request: %s %s", req.Method, req.URL.String()) + if !assert.EqualValues(t, expectedStatus, recorder.Code, + "Request: %s %s", req.Method, req.URL.String()) { + logUnexpectedResponse(t, recorder) + } } return recorder } +// logUnexpectedResponse logs the contents of an unexpected response. +func logUnexpectedResponse(t testing.TB, recorder *httptest.ResponseRecorder) { + respBytes := recorder.Body.Bytes() + if len(respBytes) == 0 { + return + } else if len(respBytes) < 500 { + // if body is short, just log the whole thing + t.Log("Response:", string(respBytes)) + return + } + + // log the "flash" error message, if one exists + // we must create a new buffer, so that we don't "use up" resp.Body + htmlDoc, err := goquery.NewDocumentFromReader(bytes.NewBuffer(respBytes)) + if err != nil { + return // probably a non-HTML response + } + errMsg := htmlDoc.Find(".ui.negative.message").Text() + if len(errMsg) > 0 { + t.Log("A flash error message was found:", errMsg) + } +} + func DecodeJSON(t testing.TB, resp *httptest.ResponseRecorder, v interface{}) { decoder := json.NewDecoder(resp.Body) assert.NoError(t, decoder.Decode(v)) |