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

Function TestResolveRemoteURL

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

Source from the content-addressed store, hash-verified

494}
495
496func TestResolveRemoteURL(t *testing.T) {
497 tmpDir := testutil.TempDir(t, "test-resolve-remote-*")
498
499 originalDir, err := os.Getwd()
500 require.NoError(t, err, "get current directory for test setup")
501 defer func() {
502 if err := os.Chdir(originalDir); err != nil {
503 t.Logf("Warning: failed to restore directory: %v", err)
504 }
505 }()
506
507 require.NoError(t, os.Chdir(tmpDir), "change to temp directory for test setup")
508
509 // Initialize a git repo
510 if err := exec.Command("git", "init").Run(); err != nil {
511 t.Skip("Git not available")
512 }
513
514 t.Run("no remotes returns error", func(t *testing.T) {
515 _, _, err := resolveRemoteURL("")
516 assert.Error(t, err, "resolveRemoteURL should return an error when no remotes are configured")
517 })
518
519 t.Run("origin remote is used when present", func(t *testing.T) {
520 require.NoError(t, exec.Command("git", "remote", "add", "origin", "https://github.com/owner/repo.git").Run(), "add origin remote")
521 defer func() { _ = exec.Command("git", "remote", "remove", "origin").Run() }()
522
523 url, name, err := resolveRemoteURL("")
524 require.NoError(t, err, "resolve remote URL with origin present")
525 assert.Equal(t, "origin", name, "resolveRemoteURL should prefer the origin remote")
526 assert.Equal(t, "https://github.com/owner/repo.git", url, "resolveRemoteURL should return the origin remote URL")
527 })
528
529 t.Run("single non-origin remote is used as fallback", func(t *testing.T) {
530 require.NoError(t, exec.Command("git", "remote", "add", "myorg", "https://github.com/myorg/repo.git").Run(), "add fallback remote")
531 defer func() { _ = exec.Command("git", "remote", "remove", "myorg").Run() }()
532
533 url, name, err := resolveRemoteURL("")
534 require.NoError(t, err, "resolve remote URL with a single non-origin remote")
535 assert.Equal(t, "myorg", name, "resolveRemoteURL should use the only configured non-origin remote")
536 assert.Equal(t, "https://github.com/myorg/repo.git", url, "resolveRemoteURL should return the only configured non-origin remote URL")
537 })
538
539 t.Run("multiple non-origin remotes returns error", func(t *testing.T) {
540 require.NoError(t, exec.Command("git", "remote", "add", "remote1", "https://github.com/org1/repo.git").Run(), "add first non-origin remote")
541 defer func() { _ = exec.Command("git", "remote", "remove", "remote1").Run() }()
542 require.NoError(t, exec.Command("git", "remote", "add", "remote2", "https://github.com/org2/repo.git").Run(), "add second non-origin remote")
543 defer func() { _ = exec.Command("git", "remote", "remove", "remote2").Run() }()
544
545 _, _, err := resolveRemoteURL("")
546 assert.Error(t, err, "resolveRemoteURL should return an error when multiple non-origin remotes are configured")
547 })
548
549 t.Run("origin takes precedence when multiple remotes exist", func(t *testing.T) {
550 require.NoError(t, exec.Command("git", "remote", "add", "origin", "https://github.com/owner/repo.git").Run(), "add origin remote")
551 defer func() { _ = exec.Command("git", "remote", "remove", "origin").Run() }()
552 require.NoError(t, exec.Command("git", "remote", "add", "upstream", "https://github.com/upstream/repo.git").Run(), "add upstream remote")
553 defer func() { _ = exec.Command("git", "remote", "remove", "upstream").Run() }()

Callers

nothing calls this directly

Calls 4

TempDirFunction · 0.92
resolveRemoteURLFunction · 0.85
RunMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected