* Add comment on non-unicode line to force fail Signed-off-by: Andrew Thornton <art27@cantab.net> * Just quote/unquote patch Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: zeripath <art27@cantab.net>tags/v1.12.0
Body: "first old line", | Body: "first old line", | ||||
OldLineNum: 1, | OldLineNum: 1, | ||||
NewLineNum: 0, | NewLineNum: 0, | ||||
}, { | |||||
Path: "iso-8859-1.txt", | |||||
Body: "this line contains a non-utf-8 character", | |||||
OldLineNum: 0, | |||||
NewLineNum: 1, | |||||
}, | }, | ||||
}, | }, | ||||
}) | }) | ||||
DecodeJSON(t, resp, &review) | DecodeJSON(t, resp, &review) | ||||
assert.EqualValues(t, 6, review.ID) | assert.EqualValues(t, 6, review.ID) | ||||
assert.EqualValues(t, "PENDING", review.State) | assert.EqualValues(t, "PENDING", review.State) | ||||
assert.EqualValues(t, 2, review.CodeCommentsCount) | |||||
assert.EqualValues(t, 3, review.CodeCommentsCount) | |||||
// test SubmitPullReview | // test SubmitPullReview | ||||
req = NewRequestWithJSON(t, http.MethodPost, fmt.Sprintf("/api/v1/repos/%s/%s/pulls/%d/reviews/%d?token=%s", repo.OwnerName, repo.Name, pullIssue.Index, review.ID, token), &api.SubmitPullReviewOptions{ | req = NewRequestWithJSON(t, http.MethodPost, fmt.Sprintf("/api/v1/repos/%s/%s/pulls/%d/reviews/%d?token=%s", repo.OwnerName, repo.Name, pullIssue.Index, review.ID, token), &api.SubmitPullReviewOptions{ | ||||
DecodeJSON(t, resp, &review) | DecodeJSON(t, resp, &review) | ||||
assert.EqualValues(t, 6, review.ID) | assert.EqualValues(t, 6, review.ID) | ||||
assert.EqualValues(t, "APPROVED", review.State) | assert.EqualValues(t, "APPROVED", review.State) | ||||
assert.EqualValues(t, 2, review.CodeCommentsCount) | |||||
assert.EqualValues(t, 3, review.CodeCommentsCount) | |||||
// test DeletePullReview | // test DeletePullReview | ||||
req = NewRequestWithJSON(t, http.MethodPost, fmt.Sprintf("/api/v1/repos/%s/%s/pulls/%d/reviews?token=%s", repo.OwnerName, repo.Name, pullIssue.Index, token), &api.CreatePullReviewOptions{ | req = NewRequestWithJSON(t, http.MethodPost, fmt.Sprintf("/api/v1/repos/%s/%s/pulls/%d/reviews?token=%s", repo.OwnerName, repo.Name, pullIssue.Index, token), &api.CreatePullReviewOptions{ |
xe�±NÄ0D©#åæŽ4 | |||||
JÄAÅ5”Ž³—,—xÑzsVþ�‚5„DåÑØ»ž7ý,=®®o.áEå�¢áq5J=éˆý�È rÄ=>4§ú O!óŠý�ã´ðÐ6ms˜8ƒ¾&\Ea¾tÍT„´I¢z”‰Ô…! ¢dso@a›Ú&ÌK5üB)›r4–”Q¦`YèLÚ¯²b ›�¾o`Ûaä3¹@(�ÒeýÔ5 ô�ÂH—\sÔHÿ9Ÿ9Rª3)Îë@ŽSùã_"§‘4sE0”Rºñ§¤.‘U|/€m¦Û¿]U÷ÌzÀ |
4a357436d925b5c974181ff12a994538ddc5a269 | |||||
5f22f7d0d95d614d25a5b68592adb345a4b5c7fd |
import ( | import ( | ||||
"fmt" | "fmt" | ||||
"regexp" | "regexp" | ||||
"strconv" | |||||
"strings" | "strings" | ||||
"unicode/utf8" | |||||
"code.gitea.io/gitea/modules/git" | "code.gitea.io/gitea/modules/git" | ||||
"code.gitea.io/gitea/modules/log" | "code.gitea.io/gitea/modules/log" | ||||
RenderedContent string `xorm:"-"` | RenderedContent string `xorm:"-"` | ||||
// Path represents the 4 lines of code cemented by this comment | // Path represents the 4 lines of code cemented by this comment | ||||
Patch string `xorm:"TEXT"` | |||||
Patch string `xorm:"-"` | |||||
PatchQuoted string `xorm:"TEXT patch"` | |||||
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"` | CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"` | ||||
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"` | UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"` | ||||
return | return | ||||
} | } | ||||
// BeforeInsert will be invoked by XORM before inserting a record | |||||
func (c *Comment) BeforeInsert() { | |||||
c.PatchQuoted = c.Patch | |||||
if !utf8.ValidString(c.Patch) { | |||||
c.PatchQuoted = strconv.Quote(c.Patch) | |||||
} | |||||
} | |||||
// BeforeUpdate will be invoked by XORM before updating a record | |||||
func (c *Comment) BeforeUpdate() { | |||||
c.PatchQuoted = c.Patch | |||||
if !utf8.ValidString(c.Patch) { | |||||
c.PatchQuoted = strconv.Quote(c.Patch) | |||||
} | |||||
} | |||||
// AfterLoad is invoked from XORM after setting the values of all fields of this object. | |||||
func (c *Comment) AfterLoad(session *xorm.Session) { | |||||
c.Patch = c.PatchQuoted | |||||
if len(c.PatchQuoted) > 0 && c.PatchQuoted[0] == '"' { | |||||
unquoted, err := strconv.Unquote(c.PatchQuoted) | |||||
if err == nil { | |||||
c.Patch = unquoted | |||||
} | |||||
} | |||||
} | |||||
func (c *Comment) loadPoster(e Engine) (err error) { | func (c *Comment) loadPoster(e Engine) (err error) { | ||||
if c.PosterID <= 0 || c.Poster != nil { | if c.PosterID <= 0 || c.Poster != nil { | ||||
return nil | return nil |