From 81b0c1b99e8dc4c1a5a5302cef204bed0dd6bb45 Mon Sep 17 00:00:00 2001 From: bircni Date: Sun, 11 Oct 2026 23:56:25 +0200 Subject: [PATCH] fix: reconcile the pull request stream Share one shortSHA helper, keep Markdown raw in view tests through the markdown preference, and drop rawWindow now that pull request lists use the paged helpers. Signed-off-by: bircni --- internal/app/checks_test.go | 2 +- internal/app/discussion_view_test.go | 14 ++++++++------ internal/app/pulls_test.go | 2 +- internal/app/status_test.go | 2 +- internal/services/raw.go | 16 ---------------- 5 files changed, 11 insertions(+), 25 deletions(-) diff --git a/internal/app/checks_test.go b/internal/app/checks_test.go index 4c6fafe4..5caf4093 100644 --- a/internal/app/checks_test.go +++ b/internal/app/checks_test.go @@ -121,7 +121,7 @@ func TestChecksSummaryAndExitCodes(t *testing.T) { })) defer server.Close() deps, out, diagnostics := serverDeps(t, server.URL) - plainTTY(&deps, server.URL) + plainTTY(t, &deps, server.URL) err := Execute(context.Background(), deps, []string{"pr", "checks", "8", "-R", "alice/x"}) require.Equal(t, tc.code, clierr.ExitCode(err)) if tc.code != 0 { diff --git a/internal/app/discussion_view_test.go b/internal/app/discussion_view_test.go index da96d501..9ea30cc5 100644 --- a/internal/app/discussion_view_test.go +++ b/internal/app/discussion_view_test.go @@ -13,9 +13,11 @@ import ( ) // plainTTY makes deps render for a terminal without color or markdown, so views compare as text. -func plainTTY(deps *Dependencies, serverURL string) { +func plainTTY(t *testing.T, deps *Dependencies, serverURL string) { + t.Helper() deps.Streams.OutTTY = true - deps.Getenv = serverEnv(serverURL, map[string]string{"NO_COLOR": "1", "TEA_MARKDOWN": "raw"}) + deps.Getenv = serverEnv(serverURL, map[string]string{"NO_COLOR": "1"}) + rawMarkdown(t, *deps) } func TestDiscussionViews(t *testing.T) { @@ -40,7 +42,7 @@ func TestDiscussionViews(t *testing.T) { require.Equal(t, "title:\tCrash[2J\nstate:\topen\nauthor:\tbob\nlabels:\tbug\nassignees:\talice\nmilestone:\t\ndue:\t\nref:\t\nblocked by:\t\nblocks:\t\ncomments:\t1\nnumber:\t3\nurl:\thttps://example.org/i/3\n--\nSteps:\n]52;c;aGk=run\n"+ "--\nauthor:\tcarol\ncreated_at:\t2026-01-02T00:00:00Z\nid:\t79\n--\nConfirmed[31m\n\tok\n", out.String()) out.Reset() - plainTTY(&deps, server.URL) + plainTTY(t, &deps, server.URL) require.NoError(t, Execute(context.Background(), deps, []string{"issue", "view", "3", "-R", "alice/project"})) require.Equal(t, "Crash[2J #3\nOpen • bob opened about 3 days ago • 1 comment\nLabels: bug\nAssignees: alice\n\nSteps:\n]52;c;aGk=run\n\n"+ "1 comment — use --comments to view them\n\nView this issue on Gitea: https://example.org/i/3\n", out.String()) @@ -75,7 +77,7 @@ func TestIssueViewDependencies(t *testing.T) { defer server.Close() deps, out, _ := serverDeps(t, server.URL) deps.Now = func() time.Time { return time.Date(2026, 1, 4, 0, 0, 0, 0, time.UTC) } - plainTTY(&deps, server.URL) + plainTTY(t, &deps, server.URL) args := []string{"issue", "view", "3", "-R", "alice/project"} require.NoError(t, Execute(context.Background(), deps, args)) require.Equal(t, "Crash #3\nOpen • bob opened about 1 day ago • 0 comments\nDue: Dec 24, 2026 (in about 11 months)\nRef: main\nBlocked by: #1, bob/lib#5, hidden\nBlocks: #9\n\nNo description provided\n\nView this issue on Gitea: https://example.org/i/3\n", out.String()) @@ -130,7 +132,7 @@ func TestPullViewCommentsIncludeReviews(t *testing.T) { "--\nauthor:\tdave\ncreated_at:\t2026-01-03T00:00:00Z\nreview:\tAPPROVED\n--\n\n"+ "--\nauthor:\talice\ncreated_at:\t2026-01-03T06:00:00Z\nreview:\tAPPROVED\n--\nGreat\n", out.String()) out.Reset() - plainTTY(&deps, server.URL) + plainTTY(t, &deps, server.URL) require.NoError(t, Execute(context.Background(), deps, []string{"pr", "view", "4", "-R", "alice/project", "--comments"})) require.Equal(t, "Fix #4\nOpen • bob wants to merge into main from fix • about 3 days ago • 1 comment\nReviewers: alice (Approved), dave (Approved)\nMergeable: yes\n\nNo description provided\n\n"+ "alice requested changes • about 2 days ago\nPlease rename\n\n"+ @@ -178,7 +180,7 @@ func TestPullViewStates(t *testing.T) { defer server.Close() deps, out, _ := serverDeps(t, server.URL) deps.Now = func() time.Time { return time.Date(2026, 1, 4, 0, 0, 0, 0, time.UTC) } - plainTTY(&deps, server.URL) + plainTTY(t, &deps, server.URL) number := map[string]string{"draft": "15"}[tc.name] if number == "" { number = "17" diff --git a/internal/app/pulls_test.go b/internal/app/pulls_test.go index fb953823..bb3807a2 100644 --- a/internal/app/pulls_test.go +++ b/internal/app/pulls_test.go @@ -57,7 +57,7 @@ func TestPullListTable(t *testing.T) { require.Equal(t, "17\tImprove greeting\tbob:bob/greeting\topen\tbob\t2026-10-11T10:00:00Z\n15\tWIP: experiment\texperiment\tdraft\talice\t2026-10-11T09:00:00Z\n", out.String()) out.Reset() - plainTTY(&deps, server.URL) + plainTTY(t, &deps, server.URL) require.NoError(t, Execute(context.Background(), deps, []string{"pr", "list", "-R", "alice/project"})) require.Equal(t, `Showing 2 of 2 open pull requests in alice/project diff --git a/internal/app/status_test.go b/internal/app/status_test.go index e5a3824b..429f5bb0 100644 --- a/internal/app/status_test.go +++ b/internal/app/status_test.go @@ -95,7 +95,7 @@ func TestPullStatusShowsTheCurrentBranch(t *testing.T) { })) defer server.Close() deps, out, _ := serverDeps(t, server.URL) - plainTTY(&deps, server.URL) + plainTTY(t, &deps, server.URL) deps.Getenv = serverEnv(server.URL, map[string]string{"NO_COLOR": "1", "TEA_REPO": "alice/project"}) deps.Git = &fakeGit{results: map[string]string{"symbolic-ref --short HEAD": "feat/one", "config --get branch.feat/one.tea-pr": "1"}} require.NoError(t, Execute(context.Background(), deps, []string{"pr", "status"})) diff --git a/internal/services/raw.go b/internal/services/raw.go index 1bf8a2db..7de21c12 100644 --- a/internal/services/raw.go +++ b/internal/services/raw.go @@ -10,8 +10,6 @@ import ( "errors" "io" "net/http" - "net/url" - "strconv" "gitea.dev/tea/internal/transport" ) @@ -39,20 +37,6 @@ func sendJSON(ctx context.Context, client *transport.Client, method, endpoint st return err } -// rawWindow is listWindow over a raw JSON collection endpoint; it sets limit and page on query. -func rawWindow[T any](ctx context.Context, client *transport.Client, endpoint string, query url.Values, limit, page int) ([]T, bool, error) { - if query == nil { - query = url.Values{} - } - return listWindow(limit, page, func(limit, page int) ([]T, http.Header, error) { - query.Set("limit", strconv.Itoa(limit)) - query.Set("page", strconv.Itoa(page)) - var response []T - headers, err := rawJSON(ctx, client, http.MethodGet, endpoint+"?"+query.Encode(), nil, &response) - return response, headers, err - }) -} - func rawJSON(ctx context.Context, client *transport.Client, method, endpoint string, body io.Reader, out any) (http.Header, error) { resp, err := client.Do(ctx, method, endpoint, body, nil) if err != nil {