You've already forked agentic-coding-workflow
61 lines
1.9 KiB
Go
61 lines
1.9 KiB
Go
package vcs
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestParseRepoRef_HTTPS(t *testing.T) {
|
|
cases := []struct{ url, owner, name string }{
|
|
{"https://git.jerryyan.net/owner/repo.git", "owner", "repo"},
|
|
{"https://git.jerryyan.net/owner/repo", "owner", "repo"},
|
|
{"http://git.jerryyan.net/acme/widgets.git", "acme", "widgets"},
|
|
{"https://git.jerryyan.net:3000/owner/repo.git", "owner", "repo"},
|
|
}
|
|
for _, c := range cases {
|
|
ref, err := ParseRepoRef(c.url, "git.jerryyan.net")
|
|
require.NoError(t, err, c.url)
|
|
assert.Equal(t, c.owner, ref.Owner, c.url)
|
|
assert.Equal(t, c.name, ref.Name, c.url)
|
|
}
|
|
}
|
|
|
|
func TestParseRepoRef_SSHAndScp(t *testing.T) {
|
|
cases := []struct{ url, owner, name string }{
|
|
{"git@git.jerryyan.net:owner/repo.git", "owner", "repo"},
|
|
{"git@git.jerryyan.net:owner/repo", "owner", "repo"},
|
|
{"ssh://git@git.jerryyan.net/owner/repo.git", "owner", "repo"},
|
|
}
|
|
for _, c := range cases {
|
|
ref, err := ParseRepoRef(c.url, "git.jerryyan.net")
|
|
require.NoError(t, err, c.url)
|
|
assert.Equal(t, c.owner, ref.Owner, c.url)
|
|
assert.Equal(t, c.name, ref.Name, c.url)
|
|
}
|
|
}
|
|
|
|
func TestParseRepoRef_UnsupportedHost(t *testing.T) {
|
|
_, err := ParseRepoRef("https://github.com/owner/repo.git", "git.jerryyan.net")
|
|
require.ErrorIs(t, err, ErrUnsupportedHost)
|
|
|
|
_, err = ParseRepoRef("git@github.com:owner/repo.git", "git.jerryyan.net")
|
|
require.ErrorIs(t, err, ErrUnsupportedHost)
|
|
}
|
|
|
|
func TestParseRepoRef_Invalid(t *testing.T) {
|
|
for _, bad := range []string{"", "not-a-url", "https://git.jerryyan.net/only-owner"} {
|
|
_, err := ParseRepoRef(bad, "git.jerryyan.net")
|
|
require.Error(t, err, bad)
|
|
}
|
|
}
|
|
|
|
func TestParseRepoRef_HostAgnostic(t *testing.T) {
|
|
// wantHost empty => skip host check
|
|
ref, err := ParseRepoRef("https://github.com/owner/repo.git", "")
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "owner", ref.Owner)
|
|
assert.Equal(t, "repo", ref.Name)
|
|
}
|