From f10b8d80950a80b59d190e0888e0246fce99fd3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Thu, 23 Jan 2020 14:05:15 +0100 Subject: [PATCH] Add unit tests for remotes-to-repos resolver --- command/pr_create_test.go | 120 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/command/pr_create_test.go b/command/pr_create_test.go index 77539b16d..047118972 100644 --- a/command/pr_create_test.go +++ b/command/pr_create_test.go @@ -10,6 +10,7 @@ import ( "strings" "testing" + "github.com/github/gh-cli/api" "github.com/github/gh-cli/context" "github.com/github/gh-cli/git" "github.com/github/gh-cli/test" @@ -188,3 +189,122 @@ Creating pull request for feature into master in OWNER/REPO `) } + +func Test_resolvedRemotes_clonedFork(t *testing.T) { + resolved := resolvedRemotes{ + baseOverride: nil, + remotes: context.Remotes{ + &context.Remote{ + Remote: &git.Remote{Name: "origin"}, + Owner: "OWNER", + Repo: "REPO", + }, + }, + network: api.RepoNetworkResult{ + Repositories: []*api.Repository{ + &api.Repository{ + Name: "REPO", + Owner: api.RepositoryOwner{Login: "OWNER"}, + ViewerPermission: "ADMIN", + Parent: &api.Repository{ + Name: "REPO", + Owner: api.RepositoryOwner{Login: "PARENTOWNER"}, + ViewerPermission: "READ", + }, + }, + }, + }, + } + + baseRepo, err := resolved.BaseRepo() + if err != nil { + t.Fatalf("got %v", err) + } + if baseRepo.RepoOwner() != "PARENTOWNER" { + t.Errorf("got owner %q", baseRepo.RepoOwner()) + } + baseRemote, err := resolved.RemoteForRepo(baseRepo) + if baseRemote != nil || err == nil { + t.Error("did not expect any remote for base") + } + + headRepo, err := resolved.HeadRepo() + if err != nil { + t.Fatalf("got %v", err) + } + if headRepo.RepoOwner() != "OWNER" { + t.Errorf("got owner %q", headRepo.RepoOwner()) + } + headRemote, err := resolved.RemoteForRepo(headRepo) + if err != nil { + t.Fatalf("got %v", err) + } + if headRemote.Name != "origin" { + t.Errorf("got remote %q", headRemote.Name) + } +} + +func Test_resolvedRemotes_triangularSetup(t *testing.T) { + resolved := resolvedRemotes{ + baseOverride: nil, + remotes: context.Remotes{ + &context.Remote{ + Remote: &git.Remote{Name: "origin"}, + Owner: "OWNER", + Repo: "REPO", + }, + &context.Remote{ + Remote: &git.Remote{Name: "fork"}, + Owner: "MYSELF", + Repo: "REPO", + }, + }, + network: api.RepoNetworkResult{ + Repositories: []*api.Repository{ + &api.Repository{ + Name: "NEWNAME", + Owner: api.RepositoryOwner{Login: "NEWOWNER"}, + ViewerPermission: "READ", + }, + &api.Repository{ + Name: "REPO", + Owner: api.RepositoryOwner{Login: "MYSELF"}, + ViewerPermission: "ADMIN", + }, + }, + }, + } + + baseRepo, err := resolved.BaseRepo() + if err != nil { + t.Fatalf("got %v", err) + } + if baseRepo.RepoOwner() != "NEWOWNER" { + t.Errorf("got owner %q", baseRepo.RepoOwner()) + } + if baseRepo.RepoName() != "NEWNAME" { + t.Errorf("got name %q", baseRepo.RepoName()) + } + baseRemote, err := resolved.RemoteForRepo(baseRepo) + if err != nil { + t.Fatalf("got %v", err) + } + if baseRemote.Name != "origin" { + t.Errorf("got remote %q", baseRemote.Name) + } + + headRepo, err := resolved.HeadRepo() + if err != nil { + t.Fatalf("got %v", err) + } + if headRepo.RepoOwner() != "MYSELF" { + t.Errorf("got owner %q", headRepo.RepoOwner()) + } + headRemote, err := resolved.RemoteForRepo(headRepo) + if err != nil { + t.Fatalf("got %v", err) + } + if headRemote.Name != "fork" { + t.Errorf("got remote %q", headRemote.Name) + } +}