This commit is contained in:
2026-06-23 05:02:15 +08:00
commit e6f1776d4f
264 changed files with 54215 additions and 0 deletions
+95
View File
@@ -0,0 +1,95 @@
package git_test
import (
"testing"
"superwork-tui/internal/git"
)
func TestParseRemoteURL(t *testing.T) {
tests := []struct {
name string
url string
wantHost string
wantOwner string
wantRepo string
wantErr bool
}{
{
name: "https with .git",
url: "https://gitea.example.com/owner/repo.git",
wantHost: "gitea.example.com",
wantOwner: "owner",
wantRepo: "repo",
},
{
name: "https without .git",
url: "https://gitea.example.com/owner/repo",
wantHost: "gitea.example.com",
wantOwner: "owner",
wantRepo: "repo",
},
{
name: "https with trailing slash",
url: "https://gitea.example.com/owner/repo.git/",
wantHost: "gitea.example.com",
wantOwner: "owner",
wantRepo: "repo",
},
{
name: "ssh git@ form",
url: "git@gitea.example.com:owner/repo.git",
wantHost: "gitea.example.com",
wantOwner: "owner",
wantRepo: "repo",
},
{
name: "ssh:// form",
url: "ssh://git@gitea.example.com/owner/repo.git",
wantHost: "gitea.example.com",
wantOwner: "owner",
wantRepo: "repo",
},
{
name: "ssh git@ without .git",
url: "git@gitea.example.com:owner/repo",
wantHost: "gitea.example.com",
wantOwner: "owner",
wantRepo: "repo",
},
{
name: "empty URL",
url: "",
wantErr: true,
},
{
name: "invalid URL",
url: "not-a-url",
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := git.ParseRemoteURL(tt.url)
if tt.wantErr {
if err == nil {
t.Fatal("want error, got nil")
}
return
}
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if got.Host != tt.wantHost {
t.Errorf("Host: got %q, want %q", got.Host, tt.wantHost)
}
if got.Owner != tt.wantOwner {
t.Errorf("Owner: got %q, want %q", got.Owner, tt.wantOwner)
}
if got.Repo != tt.wantRepo {
t.Errorf("Repo: got %q, want %q", got.Repo, tt.wantRepo)
}
})
}
}