summaryrefslogtreecommitdiffstats
path: root/integrations
diff options
context:
space:
mode:
authorEthan Koenig <ethantkoenig@gmail.com>2017-12-10 18:15:27 -0800
committerLunny Xiao <xiaolunwen@gmail.com>2017-12-11 10:15:27 +0800
commit682ac11958fed286bb0ca4d488084953f50779ef (patch)
tree37e95886620413e7bcbe1e5d7174c4482624e249 /integrations
parentdefc97afc21498fbff9c9c1714c13d980eb84ffc (diff)
downloadgitea-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.go30
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))