mirror of
https://gitea.com/gitea/tea.git
synced 2026-10-26 11:01:25 +01:00
fix(pr): keep the body of a pending review when posting another review
Signed-off-by: bircni <bircni@icloud.com>
This commit is contained in:
2 files changed
+21
-1
No files matched your search
@@ -218,7 +218,19 @@ func (a *application) reviewCreateCommand(use, short string) *cobra.Command {
|
|||||||
if body = draft.Body; needsBody && strings.TrimSpace(body) == "" {
|
if body = draft.Body; needsBody && strings.TrimSpace(body) == "" {
|
||||||
return missingBody
|
return missingBody
|
||||||
}
|
}
|
||||||
item, err := (services.Reviews{Client: t.client, Repository: t.Repo}).Create(cmd.Context(), n, services.ReviewOptions{Event: state, Body: body, Commit: commit, Comments: comments})
|
service := services.Reviews{Client: t.client, Repository: t.Repo}
|
||||||
|
if strings.TrimSpace(body) == "" && !explicit && !useEditor {
|
||||||
|
// Gitea adds a new review to the caller's oldest pending review and replaces its body,
|
||||||
|
// so keep the pending body when none was given, as tea pr review submit does.
|
||||||
|
pending, err := service.Pending(cmd.Context(), n, t.login())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if len(pending) > 0 {
|
||||||
|
body = pending[0].Body
|
||||||
|
}
|
||||||
|
}
|
||||||
|
item, err := service.Create(cmd.Context(), n, services.ReviewOptions{Event: state, Body: body, Commit: commit, Comments: comments})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,6 +94,10 @@ func TestReviewTypeFlags(t *testing.T) {
|
|||||||
t.Run(strings.Join(tc.args, " "), func(t *testing.T) {
|
t.Run(strings.Join(tc.args, " "), func(t *testing.T) {
|
||||||
var payload map[string]any
|
var payload map[string]any
|
||||||
server := newAuthenticatedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
server := newAuthenticatedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.Method == http.MethodGet && r.URL.Path == "/api/v1/repos/alice/x/pulls/13/reviews" {
|
||||||
|
_, _ = w.Write([]byte(`[]`))
|
||||||
|
return
|
||||||
|
}
|
||||||
if r.Method == http.MethodGet {
|
if r.Method == http.MethodGet {
|
||||||
require.Equal(t, "/api/v1/repos/alice/x/pulls/13", r.URL.Path)
|
require.Equal(t, "/api/v1/repos/alice/x/pulls/13", r.URL.Path)
|
||||||
_, _ = w.Write([]byte(pullJSON("bob")))
|
_, _ = w.Write([]byte(pullJSON("bob")))
|
||||||
@@ -119,6 +123,10 @@ func TestReviewTypeFlags(t *testing.T) {
|
|||||||
func TestReviewCreateIsTheReviewCommand(t *testing.T) {
|
func TestReviewCreateIsTheReviewCommand(t *testing.T) {
|
||||||
var event any
|
var event any
|
||||||
server := newAuthenticatedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
server := newAuthenticatedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.Method == http.MethodGet && r.URL.Path == "/api/v1/repos/alice/x/pulls/13/reviews" {
|
||||||
|
_, _ = w.Write([]byte(`[]`))
|
||||||
|
return
|
||||||
|
}
|
||||||
if r.Method == http.MethodGet {
|
if r.Method == http.MethodGet {
|
||||||
_, _ = w.Write([]byte(pullJSON("bob")))
|
_, _ = w.Write([]byte(pullJSON("bob")))
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in new issue
Block a user