From e1d1f2152557e007d1c27890d8430996c0eb7eeb Mon Sep 17 00:00:00 2001 From: Azeem Sajid Date: Thu, 30 Jan 2025 12:38:50 +0500 Subject: [PATCH 1/5] [gh repo view] Improve error message for forked repo --- context/context.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/context/context.go b/context/context.go index 06ef8ca7d..e3b84e6b1 100644 --- a/context/context.go +++ b/context/context.go @@ -105,7 +105,7 @@ func (r *ResolvedRemotes) BaseRepo(io *iostreams.IOStreams) (ghrepo.Interface, e fmt.Fprintln(io.Out) return nil, errors.New( - "please run `gh repo set-default` to select a default remote repository.") + "please run `gh repo set-default` to select a default remote repository.\nTo learn more about the default repository, run: gh repo set-default --help") } func (r *ResolvedRemotes) HeadRepos() ([]*api.Repository, error) { From 81eeaca959fda04f6482f5aaf2d37f0fa130dd29 Mon Sep 17 00:00:00 2001 From: Andy Feller Date: Mon, 10 Feb 2025 17:24:43 -0500 Subject: [PATCH 2/5] Align no default repo message with other uses --- context/context.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/context/context.go b/context/context.go index e3b84e6b1..7374e02bb 100644 --- a/context/context.go +++ b/context/context.go @@ -99,13 +99,13 @@ func (r *ResolvedRemotes) BaseRepo(io *iostreams.IOStreams) (ghrepo.Interface, e cs := io.ColorScheme() fmt.Fprintf(io.ErrOut, - "%s No default remote repository has been set for this directory.\n", + "%s No default remote repository has been set. To learn more about the default repository, run: gh repo set-default --help\n", cs.FailureIcon()) fmt.Fprintln(io.Out) return nil, errors.New( - "please run `gh repo set-default` to select a default remote repository.\nTo learn more about the default repository, run: gh repo set-default --help") + "please run `gh repo set-default` to select a default remote repository.") } func (r *ResolvedRemotes) HeadRepos() ([]*api.Repository, error) { From cdc7cae29c5dc3c617d978f366e5b0ac4a8dccca Mon Sep 17 00:00:00 2001 From: Azeem Sajid Date: Tue, 11 Feb 2025 09:35:16 +0500 Subject: [PATCH 3/5] Address review comments --- pkg/cmd/repo/clone/clone.go | 2 +- pkg/cmd/repo/fork/fork.go | 4 ++-- pkg/cmd/repo/setdefault/setdefault.go | 7 +++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/pkg/cmd/repo/clone/clone.go b/pkg/cmd/repo/clone/clone.go index 1466cd96a..f2b96fa12 100644 --- a/pkg/cmd/repo/clone/clone.go +++ b/pkg/cmd/repo/clone/clone.go @@ -217,7 +217,7 @@ func cloneRun(opts *CloneOptions) error { connectedToTerminal := opts.IO.IsStdoutTTY() if connectedToTerminal { cs := opts.IO.ColorScheme() - fmt.Fprintf(opts.IO.ErrOut, "%s Repository %s set as the default repository. To learn more about the default repository, run: gh repo set-default --help\n", cs.WarningIcon(), cs.Bold(ghrepo.FullName(canonicalRepo.Parent))) + fmt.Fprintf(opts.IO.Out, "%s Repository %s set as the default repository. To learn more about the default repository, run: gh repo set-default --help\n", cs.WarningIcon(), cs.Bold(ghrepo.FullName(canonicalRepo.Parent))) } } return nil diff --git a/pkg/cmd/repo/fork/fork.go b/pkg/cmd/repo/fork/fork.go index 3d62a73cc..2da807ee3 100644 --- a/pkg/cmd/repo/fork/fork.go +++ b/pkg/cmd/repo/fork/fork.go @@ -378,8 +378,8 @@ func forkRun(opts *ForkOptions) error { } if connectedToTerminal { - fmt.Fprintf(stderr, "%s Cloned fork\n", cs.SuccessIcon()) - fmt.Fprintf(stderr, "%s Repository %s set as the default repository. To learn more about the default repository, run: gh repo set-default --help\n", cs.WarningIcon(), cs.Bold(ghrepo.FullName(repoToFork))) + fmt.Fprintf(opts.IO.Out, "%s Cloned fork\n", cs.SuccessIcon()) + fmt.Fprintf(opts.IO.Out, "%s Repository %s set as the default repository. To learn more about the default repository, run: gh repo set-default --help\n", cs.WarningIcon(), cs.Bold(ghrepo.FullName(repoToFork))) } } } diff --git a/pkg/cmd/repo/setdefault/setdefault.go b/pkg/cmd/repo/setdefault/setdefault.go index 3e1554a69..ede4d00b4 100644 --- a/pkg/cmd/repo/setdefault/setdefault.go +++ b/pkg/cmd/repo/setdefault/setdefault.go @@ -119,15 +119,18 @@ func setDefaultRun(opts *SetDefaultOptions) error { currentDefaultRepo, _ := remotes.ResolvedRemote() + cs := opts.IO.ColorScheme() + if opts.ViewMode { if currentDefaultRepo != nil { fmt.Fprintln(opts.IO.Out, displayRemoteRepoName(currentDefaultRepo)) } else { - fmt.Fprintln(opts.IO.ErrOut, "no default repository has been set; use `gh repo set-default` to select one") + fmt.Fprintf(opts.IO.ErrOut, + "%s No default remote repository has been set. To learn more about the default repository, run: gh repo set-default --help\n", + cs.FailureIcon()) } return nil } - cs := opts.IO.ColorScheme() if opts.UnsetMode { var msg string From eb44ec2d869255675232d878ea100930b0d11a37 Mon Sep 17 00:00:00 2001 From: Azeem Sajid Date: Tue, 11 Feb 2025 10:34:10 +0500 Subject: [PATCH 4/5] Update tests --- pkg/cmd/repo/clone/clone.go | 2 +- pkg/cmd/repo/fork/fork.go | 4 ++-- pkg/cmd/repo/setdefault/setdefault_test.go | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/cmd/repo/clone/clone.go b/pkg/cmd/repo/clone/clone.go index f2b96fa12..1466cd96a 100644 --- a/pkg/cmd/repo/clone/clone.go +++ b/pkg/cmd/repo/clone/clone.go @@ -217,7 +217,7 @@ func cloneRun(opts *CloneOptions) error { connectedToTerminal := opts.IO.IsStdoutTTY() if connectedToTerminal { cs := opts.IO.ColorScheme() - fmt.Fprintf(opts.IO.Out, "%s Repository %s set as the default repository. To learn more about the default repository, run: gh repo set-default --help\n", cs.WarningIcon(), cs.Bold(ghrepo.FullName(canonicalRepo.Parent))) + fmt.Fprintf(opts.IO.ErrOut, "%s Repository %s set as the default repository. To learn more about the default repository, run: gh repo set-default --help\n", cs.WarningIcon(), cs.Bold(ghrepo.FullName(canonicalRepo.Parent))) } } return nil diff --git a/pkg/cmd/repo/fork/fork.go b/pkg/cmd/repo/fork/fork.go index 2da807ee3..3d62a73cc 100644 --- a/pkg/cmd/repo/fork/fork.go +++ b/pkg/cmd/repo/fork/fork.go @@ -378,8 +378,8 @@ func forkRun(opts *ForkOptions) error { } if connectedToTerminal { - fmt.Fprintf(opts.IO.Out, "%s Cloned fork\n", cs.SuccessIcon()) - fmt.Fprintf(opts.IO.Out, "%s Repository %s set as the default repository. To learn more about the default repository, run: gh repo set-default --help\n", cs.WarningIcon(), cs.Bold(ghrepo.FullName(repoToFork))) + fmt.Fprintf(stderr, "%s Cloned fork\n", cs.SuccessIcon()) + fmt.Fprintf(stderr, "%s Repository %s set as the default repository. To learn more about the default repository, run: gh repo set-default --help\n", cs.WarningIcon(), cs.Bold(ghrepo.FullName(repoToFork))) } } } diff --git a/pkg/cmd/repo/setdefault/setdefault_test.go b/pkg/cmd/repo/setdefault/setdefault_test.go index dfd72d83e..0d2e2ddaa 100644 --- a/pkg/cmd/repo/setdefault/setdefault_test.go +++ b/pkg/cmd/repo/setdefault/setdefault_test.go @@ -176,7 +176,7 @@ func TestDefaultRun(t *testing.T) { Repo: repo1, }, }, - wantStderr: "no default repository has been set; use `gh repo set-default` to select one\n", + wantStderr: "X No default remote repository has been set. To learn more about the default repository, run: gh repo set-default --help\n", }, { name: "view mode no current default", @@ -188,7 +188,7 @@ func TestDefaultRun(t *testing.T) { Repo: repo1, }, }, - wantStderr: "no default repository has been set; use `gh repo set-default` to select one\n", + wantStderr: "X No default remote repository has been set. To learn more about the default repository, run: gh repo set-default --help\n", }, { name: "view mode with base resolved current default", From bf3a40aef3af6919bba73bfeaadac2d0c169628d Mon Sep 17 00:00:00 2001 From: Fredrik Skogman Date: Tue, 11 Feb 2025 09:07:51 +0100 Subject: [PATCH 5/5] Exit with error if no matching predicate type exists Signed-off-by: Fredrik Skogman --- pkg/cmd/attestation/verify/verify.go | 2 +- pkg/cmd/attestation/verify/verify_test.go | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pkg/cmd/attestation/verify/verify.go b/pkg/cmd/attestation/verify/verify.go index 90242a9fe..0a8de8b45 100644 --- a/pkg/cmd/attestation/verify/verify.go +++ b/pkg/cmd/attestation/verify/verify.go @@ -236,7 +236,7 @@ func runVerify(opts *Options) error { filteredAttestations := verification.FilterAttestations(ec.PredicateType, attestations) if len(filteredAttestations) == 0 { opts.Logger.Printf(opts.Logger.ColorScheme.Red("✗ No attestations found with predicate type: %s\n"), opts.PredicateType) - return err + return fmt.Errorf("no matching predicate found") } attestations = filteredAttestations diff --git a/pkg/cmd/attestation/verify/verify_test.go b/pkg/cmd/attestation/verify/verify_test.go index 87ffa96f0..092a009d8 100644 --- a/pkg/cmd/attestation/verify/verify_test.go +++ b/pkg/cmd/attestation/verify/verify_test.go @@ -501,6 +501,18 @@ func TestRunVerify(t *testing.T) { require.Nil(t, runVerify(&customOpts)) }) + t.Run("with valid OCI artifact with UseBundleFromRegistry flag and unknown predicate type", func(t *testing.T) { + customOpts := publicGoodOpts + customOpts.ArtifactPath = "oci://ghcr.io/github/test" + customOpts.BundlePath = "" + customOpts.UseBundleFromRegistry = true + customOpts.PredicateType = "https://predicate.type" + + err := runVerify(&customOpts) + require.Error(t, err) + require.ErrorContains(t, err, "no matching predicate found") + }) + t.Run("with valid OCI artifact with UseBundleFromRegistry flag but no bundle return from registry", func(t *testing.T) { customOpts := publicGoodOpts customOpts.ArtifactPath = "oci://ghcr.io/github/test"