From a7691750193a56854585e1a8dff01ff70c24ad57 Mon Sep 17 00:00:00 2001 From: "Babak K. Shandiz" Date: Fri, 5 Sep 2025 16:57:44 +0100 Subject: [PATCH] test(pr/shared): add test for `ParseFullReference` Signed-off-by: Babak K. Shandiz --- pkg/cmd/pr/shared/finder_test.go | 75 ++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/pkg/cmd/pr/shared/finder_test.go b/pkg/cmd/pr/shared/finder_test.go index 0f6da5a6e..5e33ee876 100644 --- a/pkg/cmd/pr/shared/finder_test.go +++ b/pkg/cmd/pr/shared/finder_test.go @@ -11,6 +11,7 @@ import ( "github.com/cli/cli/v2/git" "github.com/cli/cli/v2/internal/ghrepo" "github.com/cli/cli/v2/pkg/httpmock" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -78,6 +79,80 @@ func TestParseURL(t *testing.T) { } } +func TestParseFullReference(t *testing.T) { + tests := []struct { + name string + arg string + wantRepo ghrepo.Interface + wantNumber int + wantErr string + }{ + { + name: "number", + arg: "123", + wantErr: `invalid reference: "123"`, + }, + { + name: "number with hash", + arg: "#123", + wantErr: `invalid reference: "#123"`, + }, + { + name: "full form", + arg: "OWNER/REPO#123", + wantNumber: 123, + wantRepo: ghrepo.New("OWNER", "REPO"), + }, + { + name: "empty", + wantErr: "empty reference", + }, + { + name: "invalid full form, without hash", + arg: "OWNER/REPO123", + wantErr: `invalid reference: "OWNER/REPO123"`, + }, + { + name: "invalid full form, empty owner and repo", + arg: "/#123", + wantErr: `invalid reference: "/#123"`, + }, + { + name: "invalid full form, without owner", + arg: "REPO#123", + wantErr: `invalid reference: "REPO#123"`, + }, + { + name: "invalid full form, without repo", + arg: "OWNER/#123", + wantErr: `invalid reference: "OWNER/#123"`, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + repo, number, err := ParseFullReference(tt.arg) + + if tt.wantErr != "" { + require.EqualError(t, err, tt.wantErr) + assert.Nil(t, repo) + assert.Zero(t, number) + return + } + + require.NoError(t, err) + assert.Equal(t, tt.wantNumber, number) + + if tt.wantRepo != nil { + require.NotNil(t, repo) + assert.True(t, ghrepo.IsSame(tt.wantRepo, repo)) + } else { + assert.Nil(t, repo) + } + }) + } +} + type args struct { baseRepoFn func() (ghrepo.Interface, error) branchFn func() (string, error)