MCPcopy Create free account
hub / github.com/github/gh-aw / TestGetRepositorySlugFromRemotePreferringUpstream

Function TestGetRepositorySlugFromRemotePreferringUpstream

pkg/cli/git_test.go:562–614  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

560}
561
562func TestGetRepositorySlugFromRemotePreferringUpstream(t *testing.T) {
563 tmpDir := testutil.TempDir(t, "test-slug-upstream-*")
564
565 originalDir, err := os.Getwd()
566 require.NoError(t, err, "get current directory for test setup")
567 defer func() {
568 if err := os.Chdir(originalDir); err != nil {
569 t.Logf("Warning: failed to restore directory: %v", err)
570 }
571 }()
572
573 require.NoError(t, os.Chdir(tmpDir), "change to temp directory for test setup")
574
575 if err := exec.Command("git", "init").Run(); err != nil {
576 t.Skip("Git not available")
577 }
578
579 addRemote := func(t *testing.T, name, remoteURL string) {
580 t.Helper()
581 if err := exec.Command("git", "remote", "get-url", name).Run(); err == nil {
582 require.NoError(t, exec.Command("git", "remote", "remove", name).Run(), "remove existing %s remote", name)
583 }
584 require.NoError(t, exec.Command("git", "remote", "add", name, remoteURL).Run(), "add %s remote", name)
585 t.Cleanup(func() {
586 if err := exec.Command("git", "remote", "remove", name).Run(); err != nil {
587 t.Logf("Warning: failed to remove %s remote during cleanup: %v", name, err)
588 }
589 })
590 }
591
592 t.Run("prefers upstream when both origin and upstream exist", func(t *testing.T) {
593 addRemote(t, "origin", "https://github.com/fork/repo.git")
594 addRemote(t, "upstream", "https://github.com/upstream/repo.git")
595
596 slug := getRepositorySlugFromRemotePreferringUpstream()
597 assert.Equal(t, "upstream/repo", slug, "getRepositorySlugFromRemotePreferringUpstream should prefer upstream")
598 })
599
600 t.Run("falls back to origin when upstream missing", func(t *testing.T) {
601 addRemote(t, "origin", "https://github.com/myorg/myrepo.git")
602
603 slug := getRepositorySlugFromRemotePreferringUpstream()
604 assert.Equal(t, "myorg/myrepo", slug, "getRepositorySlugFromRemotePreferringUpstream should fall back to origin")
605 })
606
607 t.Run("falls back to origin when upstream is unparsable", func(t *testing.T) {
608 addRemote(t, "origin", "https://github.com/myorg/myrepo.git")
609 addRemote(t, "upstream", "https://example.com/upstream/repo.git")
610
611 slug := getRepositorySlugFromRemotePreferringUpstream()
612 assert.Equal(t, "myorg/myrepo", slug, "getRepositorySlugFromRemotePreferringUpstream should fall back to origin when upstream is unparsable")
613 })
614}
615
616func TestGetRepositorySlugFromRemoteForPathPreferringUpstream(t *testing.T) {
617 tmpDir := testutil.TempDir(t, "test-slug-upstream-path-*")

Callers

nothing calls this directly

Calls 3

TempDirFunction · 0.92
RunMethod · 0.45

Tested by

no test coverage detected